You can subscribe to this list here.
| 2006 |
Jan
|
Feb
(26) |
Mar
(493) |
Apr
(372) |
May
(131) |
Jun
(96) |
Jul
(87) |
Aug
(116) |
Sep
(68) |
Oct
(127) |
Nov
(158) |
Dec
(122) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2007 |
Jan
(258) |
Feb
(148) |
Mar
(367) |
Apr
(202) |
May
(268) |
Jun
(182) |
Jul
(344) |
Aug
(324) |
Sep
(254) |
Oct
(264) |
Nov
(155) |
Dec
(169) |
| 2008 |
Jan
(266) |
Feb
(330) |
Mar
(371) |
Apr
(378) |
May
(259) |
Jun
(547) |
Jul
(319) |
Aug
(346) |
Sep
(198) |
Oct
(440) |
Nov
(230) |
Dec
(251) |
| 2009 |
Jan
(422) |
Feb
(344) |
Mar
(274) |
Apr
(70) |
May
(27) |
Jun
(86) |
Jul
(214) |
Aug
(158) |
Sep
(272) |
Oct
(235) |
Nov
(232) |
Dec
(155) |
| 2010 |
Jan
(147) |
Feb
(75) |
Mar
(93) |
Apr
(120) |
May
(317) |
Jun
(373) |
Jul
(324) |
Aug
(222) |
Sep
(274) |
Oct
(439) |
Nov
(358) |
Dec
(274) |
| 2011 |
Jan
(200) |
Feb
(167) |
Mar
(82) |
Apr
(159) |
May
(176) |
Jun
(120) |
Jul
(68) |
Aug
(85) |
Sep
(75) |
Oct
(40) |
Nov
(130) |
Dec
(106) |
| 2012 |
Jan
(254) |
Feb
(411) |
Mar
(274) |
Apr
(43) |
May
(136) |
Jun
(97) |
Jul
(64) |
Aug
(118) |
Sep
(465) |
Oct
(550) |
Nov
(424) |
Dec
(394) |
| 2013 |
Jan
(329) |
Feb
(289) |
Mar
(259) |
Apr
(236) |
May
(243) |
Jun
(379) |
Jul
(311) |
Aug
(296) |
Sep
(297) |
Oct
(422) |
Nov
(466) |
Dec
(254) |
| 2014 |
Jan
(364) |
Feb
(278) |
Mar
(208) |
Apr
(184) |
May
(248) |
Jun
(370) |
Jul
(396) |
Aug
(246) |
Sep
(156) |
Oct
(168) |
Nov
(331) |
Dec
(158) |
| 2015 |
Jan
(3) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
|
|
|
1
(3) |
|
2
(9) |
3
(20) |
4
(11) |
5
(28) |
6
(6) |
7
(13) |
8
(6) |
|
9
(11) |
10
(3) |
11
(3) |
12
(5) |
13
(4) |
14
(30) |
15
(2) |
|
16
|
17
|
18
(3) |
19
(2) |
20
(10) |
21
(1) |
22
(6) |
|
23
(13) |
24
(11) |
25
(1) |
26
(6) |
27
(1) |
28
|
29
(27) |
|
30
(19) |
|
|
|
|
|
|
|
From: <tir...@us...> - 2007-09-30 23:37:59
|
Revision: 4205
http://pcgen.svn.sourceforge.net/pcgen/?rev=4205&view=rev
Author: tir-gwaith
Date: 2007-09-30 16:38:02 -0700 (Sun, 30 Sep 2007)
Log Message:
-----------
adding header for ABILITYCATEGORY table
Modified Paths:
--------------
Trunk/pcgen/system/gameModes/Modern/miscinfo.lst
Modified: Trunk/pcgen/system/gameModes/Modern/miscinfo.lst
===================================================================
--- Trunk/pcgen/system/gameModes/Modern/miscinfo.lst 2007-09-30 23:30:21 UTC (rev 4204)
+++ Trunk/pcgen/system/gameModes/Modern/miscinfo.lst 2007-09-30 23:38:02 UTC (rev 4205)
@@ -209,24 +209,26 @@
#
# Ability Categories
#
-ABILITYCATEGORY:Mutation VISIBLE:YES EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO POOL:0 CATEGORY:Mutation PLURAL:Mutations
+# Ability Category Visible Editable or Static? Change Pool? Fractional values? Base Pool number Category of Object Type of Object Plural description for UI Display where?
+ABILITYCATEGORY:Mutation VISIBLE:YES EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO POOL:0 CATEGORY:Mutation PLURAL:Mutations
-#ABILITYCATEGORY:Occupation VISIBLE:QUALIFY EDITABLE:YES EDITPOOL:NO FRACTIONALPOOL:NO POOL:0 CATEGORY:Occupation PLURAL:Occupations
+#ABILITYCATEGORY:Occupation VISIBLE:QUALIFY EDITABLE:YES EDITPOOL:NO FRACTIONALPOOL:NO POOL:0 CATEGORY:Occupation PLURAL:Occupations
###COMMENT: Occupations have issue with not knowing 1st level Class Skills - Slated for 6.0 when CDOM goes live. -AM
-ABILITYCATEGORY:Internal VISIBLE:NO EDITABLE:NO EDITPOOL:NO FRACTIONALPOOL:NO POOL:0 CATEGORY:Internal
+ABILITYCATEGORY:Internal VISIBLE:NO EDITABLE:NO EDITPOOL:NO FRACTIONALPOOL:NO POOL:0 CATEGORY:Internal
###COMMENT: Internal Category is for all hidden abilities.
-ABILITYCATEGORY:Talent VISIBLE:QUALIFY EDITABLE:YES EDITPOOL:NO FRACTIONALPOOL:NO POOL:0 CATEGORY:Talent PLURAL:Talents DISPLAYLOCATION:Talents
-ABILITYCATEGORY:Strong Talent VISIBLE:QUALIFY EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO POOL:0 CATEGORY:Talent TYPE:StrongTalent PLURAL:Strong Talents DISPLAYLOCATION:Talents
-ABILITYCATEGORY:Fast Talent VISIBLE:QUALIFY EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO POOL:0 CATEGORY:Talent TYPE:FastTalent PLURAL:Fast Talents DISPLAYLOCATION:Talents
-ABILITYCATEGORY:Tough Talent VISIBLE:QUALIFY EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO POOL:0 CATEGORY:Talent TYPE:ToughTalent PLURAL:Tough Talents DISPLAYLOCATION:Talents
-ABILITYCATEGORY:Smart Talent VISIBLE:QUALIFY EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO POOL:0 CATEGORY:Talent TYPE:SmartTalent PLURAL:Smart Talents DISPLAYLOCATION:Talents
-ABILITYCATEGORY:Dedicated Talent VISIBLE:QUALIFY EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO POOL:0 CATEGORY:Talent TYPE:DedicatedTalent PLURAL:Dedicated Talents DISPLAYLOCATION:Talents
-ABILITYCATEGORY:Charismatic Talent VISIBLE:QUALIFY EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO POOL:0 CATEGORY:Talent TYPE:CharismaticTalent PLURAL:Charismatic Talents DISPLAYLOCATION:Talents
+# Ability Category Visible Editable or Static? Change Pool? Fractional values? Base Pool number Category of Object Type of Object Plural description for UI Display where?
+ABILITYCATEGORY:Talent VISIBLE:QUALIFY EDITABLE:YES EDITPOOL:NO FRACTIONALPOOL:NO POOL:0 CATEGORY:Talent PLURAL:Talents DISPLAYLOCATION:Talents
+ABILITYCATEGORY:Strong Talent VISIBLE:QUALIFY EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO POOL:0 CATEGORY:Talent TYPE:StrongTalent PLURAL:Strong Talents DISPLAYLOCATION:Talents
+ABILITYCATEGORY:Fast Talent VISIBLE:QUALIFY EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO POOL:0 CATEGORY:Talent TYPE:FastTalent PLURAL:Fast Talents DISPLAYLOCATION:Talents
+ABILITYCATEGORY:Tough Talent VISIBLE:QUALIFY EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO POOL:0 CATEGORY:Talent TYPE:ToughTalent PLURAL:Tough Talents DISPLAYLOCATION:Talents
+ABILITYCATEGORY:Smart Talent VISIBLE:QUALIFY EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO POOL:0 CATEGORY:Talent TYPE:SmartTalent PLURAL:Smart Talents DISPLAYLOCATION:Talents
+ABILITYCATEGORY:Dedicated Talent VISIBLE:QUALIFY EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO POOL:0 CATEGORY:Talent TYPE:DedicatedTalent PLURAL:Dedicated Talents DISPLAYLOCATION:Talents
+ABILITYCATEGORY:Charismatic Talent VISIBLE:QUALIFY EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO POOL:0 CATEGORY:Talent TYPE:CharismaticTalent PLURAL:Charismatic Talents DISPLAYLOCATION:Talents
### These need to be moved to the proper PCC files when tracker is completed for adding CATEGORY via pcc is completed. -AM
-ABILITYCATEGORY:Combat Hero Talent VISIBLE:QUALIFY EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO POOL:0 CATEGORY:Talent TYPE:CombatHeroTalent PLURAL:Combat Hero Talents DISPLAYLOCATION:Talents
-ABILITYCATEGORY:Covert Hero Talent VISIBLE:QUALIFY EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO POOL:0 CATEGORY:Talent TYPE:CovertHeroTalent PLURAL:Covert Hero Talents DISPLAYLOCATION:Talents
+ABILITYCATEGORY:Combat Hero Talent VISIBLE:QUALIFY EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO POOL:0 CATEGORY:Talent TYPE:CombatHeroTalent PLURAL:Combat Hero Talents DISPLAYLOCATION:Talents
+ABILITYCATEGORY:Covert Hero Talent VISIBLE:QUALIFY EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO POOL:0 CATEGORY:Talent TYPE:CovertHeroTalent PLURAL:Covert Hero Talents DISPLAYLOCATION:Talents
PREVIEWDIR:d20/modern
PREVIEWSHEET:Standard.htm
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tir...@us...> - 2007-09-30 23:30:17
|
Revision: 4204
http://pcgen.svn.sourceforge.net/pcgen/?rev=4204&view=rev
Author: tir-gwaith
Date: 2007-09-30 16:30:21 -0700 (Sun, 30 Sep 2007)
Log Message:
-----------
adding header for ABILITYCATEGORY table
Modified Paths:
--------------
Trunk/pcgen/system/gameModes/3e/miscinfo.lst
Modified: Trunk/pcgen/system/gameModes/3e/miscinfo.lst
===================================================================
--- Trunk/pcgen/system/gameModes/3e/miscinfo.lst 2007-09-30 23:29:04 UTC (rev 4203)
+++ Trunk/pcgen/system/gameModes/3e/miscinfo.lst 2007-09-30 23:30:21 UTC (rev 4204)
@@ -209,7 +209,8 @@
#
# Ability Categories
#
-ABILITYCATEGORY:Fighter Feat VISIBLE:YES EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO CATEGORY:FEAT TYPE:Fighter PLURAL:Fighter Feats DISPLAYLOCATION:Feats
+# Ability Category Visible Editable or Static? Change Pool? Fractional values? Base Pool number Category of Object Type of Object Plural description for UI Display where?
+ABILITYCATEGORY:Fighter Feat VISIBLE:YES EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO CATEGORY:FEAT TYPE:Fighter PLURAL:Fighter Feats DISPLAYLOCATION:Feats
PREVIEWDIR:d20/fantasy
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tir...@us...> - 2007-09-30 23:29:01
|
Revision: 4203
http://pcgen.svn.sourceforge.net/pcgen/?rev=4203&view=rev
Author: tir-gwaith
Date: 2007-09-30 16:29:04 -0700 (Sun, 30 Sep 2007)
Log Message:
-----------
adding header for ABILITYCATEGORY table
Modified Paths:
--------------
Trunk/pcgen/system/gameModes/35e/miscinfo.lst
Modified: Trunk/pcgen/system/gameModes/35e/miscinfo.lst
===================================================================
--- Trunk/pcgen/system/gameModes/35e/miscinfo.lst 2007-09-30 23:11:20 UTC (rev 4202)
+++ Trunk/pcgen/system/gameModes/35e/miscinfo.lst 2007-09-30 23:29:04 UTC (rev 4203)
@@ -265,8 +265,9 @@
#
# Ability Categories
#
-ABILITYCATEGORY:Salient Divine Ability VISIBLE:YES EDITABLE:YES EDITPOOL:NO FRACTIONALPOOL:NO POOL:SalientDivinePool CATEGORY:Salient Divine Ability PLURAL:Salient Divine Abilities
-ABILITYCATEGORY:Fighter Feat VISIBLE:YES EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO CATEGORY:FEAT TYPE:Fighter PLURAL:Fighter Feats DISPLAYLOCATION:Feats
+# Ability Category Visible Editable or Static? Change Pool? Fractional values? Base Pool number Category of Object Type of Object Plural description for UI Display where?
+ABILITYCATEGORY:Salient Divine Ability VISIBLE:YES EDITABLE:YES EDITPOOL:NO FRACTIONALPOOL:NO POOL:SalientDivinePool CATEGORY:Salient Divine Ability PLURAL:Salient Divine Abilities
+ABILITYCATEGORY:Fighter Feat VISIBLE:YES EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO CATEGORY:FEAT TYPE:Fighter PLURAL:Fighter Feats DISPLAYLOCATION:Feats
PREVIEWDIR:d20/fantasy
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tir...@us...> - 2007-09-30 23:11:23
|
Revision: 4202
http://pcgen.svn.sourceforge.net/pcgen/?rev=4202&view=rev
Author: tir-gwaith
Date: 2007-09-30 16:11:20 -0700 (Sun, 30 Sep 2007)
Log Message:
-----------
[ 1805246 ] [R/SRD] Fighter Feat Pool using ABILITYPOOL
Modified Paths:
--------------
Trunk/pcgen/data/d20ogl/srd/basics/srd_classes_base.lst
Modified: Trunk/pcgen/data/d20ogl/srd/basics/srd_classes_base.lst
===================================================================
--- Trunk/pcgen/data/d20ogl/srd/basics/srd_classes_base.lst 2007-09-30 23:08:49 UTC (rev 4201)
+++ Trunk/pcgen/data/d20ogl/srd/basics/srd_classes_base.lst 2007-09-30 23:11:20 UTC (rev 4202)
@@ -221,17 +221,19 @@
1 AUTO:FEAT|Armor Proficiency (Light)|Armor Proficiency (Medium)|Armor Proficiency (Heavy)
1 AUTO:FEAT|Shield Proficiency
###Block: Level progression
-1 ADD:FEAT|1|TYPE=Fighter
-2 ADD:FEAT|1|TYPE=Fighter
-4 DEFINE:WeapSpecQualify|1 ADD:FEAT|1|TYPE=Fighter
-6 ADD:FEAT|1|TYPE=Fighter
-8 ADD:FEAT|1|TYPE=Fighter
-10 ADD:FEAT|1|TYPE=Fighter
-12 ADD:FEAT|1|TYPE=Fighter
-14 ADD:FEAT|1|TYPE=Fighter
-16 ADD:FEAT|1|TYPE=Fighter
-18 ADD:FEAT|1|TYPE=Fighter
-20 ADD:FEAT|1|TYPE=Fighter
+1 BONUS:ABILITYPOOL|Fighter Feat|CL/2+1
+4 DEFINE:WeapSpecQualify|1
+#1 ADD:FEAT|1|TYPE=Fighter
+#2 ADD:FEAT|1|TYPE=Fighter
+#4 DEFINE:WeapSpecQualify|1 ADD:FEAT|1|TYPE=Fighter
+#6 ADD:FEAT|1|TYPE=Fighter
+#8 ADD:FEAT|1|TYPE=Fighter
+#10 ADD:FEAT|1|TYPE=Fighter
+#12 ADD:FEAT|1|TYPE=Fighter
+#14 ADD:FEAT|1|TYPE=Fighter
+#16 ADD:FEAT|1|TYPE=Fighter
+#18 ADD:FEAT|1|TYPE=Fighter
+#20 ADD:FEAT|1|TYPE=Fighter
# To have a PrC's levels stack with Monk for different abilities
# add to the following variables:
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tir...@us...> - 2007-09-30 23:08:47
|
Revision: 4201
http://pcgen.svn.sourceforge.net/pcgen/?rev=4201&view=rev
Author: tir-gwaith
Date: 2007-09-30 16:08:49 -0700 (Sun, 30 Sep 2007)
Log Message:
-----------
[ 1805246 ] [R/SRD] Fighter Feat Pool using ABILITYPOOL
Modified Paths:
--------------
Trunk/pcgen/system/gameModes/3e/miscinfo.lst
Modified: Trunk/pcgen/system/gameModes/3e/miscinfo.lst
===================================================================
--- Trunk/pcgen/system/gameModes/3e/miscinfo.lst 2007-09-30 21:28:38 UTC (rev 4200)
+++ Trunk/pcgen/system/gameModes/3e/miscinfo.lst 2007-09-30 23:08:49 UTC (rev 4201)
@@ -206,6 +206,12 @@
#
WEAPONREACH:(RACEREACH+(max(0,REACH-5)))*REACHMULT
+#
+# Ability Categories
+#
+ABILITYCATEGORY:Fighter Feat VISIBLE:YES EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO CATEGORY:FEAT TYPE:Fighter PLURAL:Fighter Feats DISPLAYLOCATION:Feats
+
+
PREVIEWDIR:d20/fantasy
PREVIEWSHEET:preview.html
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <th...@us...> - 2007-09-30 21:28:34
|
Revision: 4200
http://pcgen.svn.sourceforge.net/pcgen/?rev=4200&view=rev
Author: thpr
Date: 2007-09-30 14:28:38 -0700 (Sun, 30 Sep 2007)
Log Message:
-----------
Commit testing of the old choose tokens -
probably not valuable code, but I don't want to lose it
in case it does become useful to test a converter
Added Paths:
-----------
branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/
branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/AbstractChooseTokenTestCase.java
branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/AbstractEmptyChooseTokenTestCase.java
branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/ArmorProfTokenTest.java
branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/ArmorTypeTokenTest.java
branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/CCSkillListTokenTest.java
branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/CSkillsTokenTest.java
branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/DomainTokenTest.java
branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/EquipTypeTokenTest.java
branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/FeatAddTokenTest.java
branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/FeatListTokenTest.java
branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/FeatSelectTokenTest.java
branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/NoChoiceTokenTest.java
branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/ShieldProfTokenTest.java
branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/SkillsNamedToCCSkillTokenTest.java
branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/SkillsNamedToCSkillTokenTest.java
branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/SkillsNamedTokenTest.java
branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/SkillsTokenTest.java
branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/SpellClassesTokenTest.java
branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/SpellsTokenTest.java
branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/StatTokenTest.java
branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/TokenChooseTestSuite.java
branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/WeaponProfTokenTest.java
branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/WeaponProfsTokenTest.java
Added: branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/AbstractChooseTokenTestCase.java
===================================================================
--- branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/AbstractChooseTokenTestCase.java (rev 0)
+++ branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/AbstractChooseTokenTestCase.java 2007-09-30 21:28:38 UTC (rev 4200)
@@ -0,0 +1,582 @@
+/*
+ * Copyright (c) 2007 Tom Parker <th...@us...>
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+package plugin.lsttokens.oldchoose;
+
+import java.net.URISyntaxException;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import pcgen.core.PObject;
+import pcgen.persistence.LoadContext;
+import pcgen.persistence.PersistenceLayerException;
+import pcgen.persistence.lst.ChooseLstToken;
+import pcgen.persistence.lst.GlobalLstToken;
+import plugin.lsttokens.ChooseLst;
+import plugin.lsttokens.testsupport.AbstractGlobalTokenTestCase;
+import plugin.lsttokens.testsupport.TokenRegistration;
+
+public abstract class AbstractChooseTokenTestCase extends
+ AbstractGlobalTokenTestCase
+{
+
+ static ChooseLst token = new ChooseLst();
+
+ @Override
+ @Before
+ public void setUp() throws PersistenceLayerException, URISyntaxException
+ {
+ super.setUp();
+ TokenRegistration.register(getSubToken());
+ }
+
+ @Test
+ public void testArchitecture()
+ {
+ /*
+ * This case is not handled well by this generic tester, and thus should
+ * be prohibited in this level of automation... - Tom Parker 6/15/2007
+ */
+ assertFalse(isTypeLegal() && getJoinCharacter() == '.');
+ }
+
+ protected abstract char getJoinCharacter();
+
+ protected abstract ChooseLstToken getSubToken();
+
+ protected abstract <T extends PObject> Class<T> getSubTokenType();
+
+ protected abstract boolean isPrimitiveLegal();
+
+ protected abstract boolean requiresConstruction();
+
+ protected abstract boolean isTypeLegal();
+
+ protected abstract boolean isAnyLegal();
+
+ public String getSubTokenString()
+ {
+ return getSubToken().getTokenName();
+ }
+
+ private String prefix = "";
+
+ protected void setPrefix(String s)
+ {
+ prefix = s;
+ }
+
+ protected String getPrefix()
+ {
+ return prefix;
+ }
+
+ @Test
+ public void testInvalidNoPrefix() throws PersistenceLayerException
+ {
+ if (prefix.length() != 0)
+ {
+ assertFalse(getToken().parse(primaryContext, primaryProf,
+ getSubTokenString() + "|String"));
+ }
+ }
+
+ @Test
+ public void testInvalidInputString() throws PersistenceLayerException
+ {
+ boolean parse =
+ getToken().parse(primaryContext, primaryProf,
+ getSubTokenString() + prefix + "|String");
+ if (isPrimitiveLegal() == parse)
+ {
+ assertEquals(!requiresConstruction(), primaryContext.ref.validate());
+ }
+ else
+ {
+ assertEquals(!requiresConstruction(), parse);
+ }
+ }
+
+ @Test
+ public void testInvalidInputType() throws PersistenceLayerException
+ {
+ boolean parse =
+ getToken().parse(primaryContext, primaryProf,
+ getSubTokenString() + prefix + "|TestType");
+ if (isPrimitiveLegal() == parse)
+ {
+ assertEquals(!requiresConstruction(), primaryContext.ref.validate());
+ }
+ else
+ {
+ assertEquals(!requiresConstruction(), parse);
+ }
+ }
+
+ @Test
+ public void testInvalidInputJoinedComma() throws PersistenceLayerException
+ {
+ if (isPrimitiveLegal() && getJoinCharacter() != ',')
+ {
+ construct(primaryContext, "TestWP1");
+ construct(primaryContext, "TestWP2");
+ boolean parse =
+ getToken().parse(primaryContext, primaryProf,
+ getSubTokenString() + prefix + "|TestWP1,TestWP2");
+ if (parse)
+ {
+ assertFalse(primaryContext.ref.validate());
+ }
+ }
+ }
+
+ @Test
+ public void testInvalidInputJoinedDot() throws PersistenceLayerException
+ {
+ if (isPrimitiveLegal() && getJoinCharacter() != '.')
+ {
+ construct(primaryContext, "TestWP1");
+ construct(primaryContext, "TestWP2");
+ boolean parse =
+ getToken().parse(primaryContext, primaryProf,
+ getSubTokenString() + prefix + "|TestWP1.TestWP2");
+ if (parse)
+ {
+ assertFalse(primaryContext.ref.validate());
+ }
+ }
+ }
+
+ @Test
+ public void testInvalidInputJoinedPipe() throws PersistenceLayerException
+ {
+ if (isPrimitiveLegal() && getJoinCharacter() != '|')
+ {
+ construct(primaryContext, "TestWP1");
+ construct(primaryContext, "TestWP2");
+ boolean parse =
+ getToken().parse(primaryContext, primaryProf,
+ getSubTokenString() + prefix + "|TestWP1|TestWP2");
+ if (parse)
+ {
+ assertFalse(primaryContext.ref.validate());
+ }
+ }
+ }
+
+ @Test
+ public void testInvalidInputTypeEmpty() throws PersistenceLayerException
+ {
+ if (isTypeLegal())
+ {
+ assertFalse(getToken().parse(primaryContext, primaryProf,
+ getSubTokenString() + prefix + "|TYPE="));
+ assertTrue(primaryGraph.isEmpty());
+ }
+ }
+
+ @Test
+ public void testInvalidInputTypeUnterminated()
+ throws PersistenceLayerException
+ {
+ if (isTypeLegal())
+ {
+ assertFalse(getToken().parse(primaryContext, primaryProf,
+ getSubTokenString() + prefix + "|TYPE=One."));
+ assertTrue(primaryGraph.isEmpty());
+ }
+ }
+
+ @Test
+ public void testInvalidInputTypeDoubleSeparator()
+ throws PersistenceLayerException
+ {
+ if (isTypeLegal())
+ {
+ assertFalse(getToken().parse(primaryContext, primaryProf,
+ getSubTokenString() + prefix + "|TYPE=One..Two"));
+ assertTrue(primaryGraph.isEmpty());
+ }
+ }
+
+ @Test
+ public void testInvalidInputTypeFalseStart()
+ throws PersistenceLayerException
+ {
+ if (isTypeLegal())
+ {
+ assertFalse(getToken().parse(primaryContext, primaryProf,
+ getSubTokenString() + prefix + "|TYPE=.One"));
+ assertTrue(primaryGraph.isEmpty());
+ }
+ }
+
+ @Test
+ public void testInvalidInputAnyItem() throws PersistenceLayerException
+ {
+ if (isPrimitiveLegal() && isAnyLegal())
+ {
+ construct(primaryContext, "TestWP1");
+ assertFalse(getToken().parse(
+ primaryContext,
+ primaryProf,
+ getSubTokenString() + prefix + "|ANY" + getJoinCharacter()
+ + "TestWP1"));
+ assertTrue(primaryGraph.isEmpty());
+ }
+ }
+
+ @Test
+ public void testInvalidInputItemAny() throws PersistenceLayerException
+ {
+ if (isPrimitiveLegal() && isAnyLegal())
+ {
+ construct(primaryContext, "TestWP1");
+ assertFalse(getToken().parse(
+ primaryContext,
+ primaryProf,
+ getSubTokenString() + prefix + "|TestWP1" + getJoinCharacter()
+ + "ANY"));
+ assertTrue(primaryGraph.isEmpty());
+ }
+ }
+
+ @Test
+ public void testInvalidInputAnyType() throws PersistenceLayerException
+ {
+ if (isAnyLegal() && isTypeLegal())
+ {
+ assertFalse(getToken().parse(
+ primaryContext,
+ primaryProf,
+ getSubTokenString() + prefix + "|ANY" + getJoinCharacter()
+ + "TYPE=TestType"));
+ assertTrue(primaryGraph.isEmpty());
+ }
+ }
+
+ @Test
+ public void testInvalidInputTypeAny() throws PersistenceLayerException
+ {
+ if (isAnyLegal() && isTypeLegal())
+ {
+ assertFalse(getToken().parse(
+ primaryContext,
+ primaryProf,
+ getSubTokenString() + prefix + "|TYPE=TestType"
+ + getJoinCharacter() + "ANY"));
+ assertTrue(primaryGraph.isEmpty());
+ }
+ }
+
+ // FIXME Need to implement!
+ // @Test
+ // public void testInvalidInputCheckType() throws PersistenceLayerException
+ // {
+ // assertTrue(token.parse(primaryContext, primaryProf, getSubTokenString()
+ // + "|TYPE=TestType"));
+ // assertFalse(primaryContext.ref.validate());
+ // }
+
+ @Test
+ public void testInvalidEmptyBracket() throws PersistenceLayerException
+ {
+ if (isPrimitiveLegal())
+ {
+ construct(primaryContext, "TestWP1");
+ assertFalse(getToken().parse(primaryContext, primaryProf,
+ getSubTokenString() + prefix + "|TestWP1[]"));
+ assertTrue(primaryGraph.isEmpty());
+ }
+ }
+
+ @Test
+ public void testInvalidListEnd() throws PersistenceLayerException
+ {
+ if (isPrimitiveLegal())
+ {
+ construct(primaryContext, "TestWP1");
+ assertFalse(getToken().parse(primaryContext, primaryProf,
+ getSubTokenString() + prefix + "|TestWP1" + getJoinCharacter()));
+ assertTrue(primaryGraph.isEmpty());
+ }
+ }
+
+ @Test
+ public void testInvalidListStart() throws PersistenceLayerException
+ {
+ if (isPrimitiveLegal())
+ {
+ construct(primaryContext, "TestWP1");
+ assertFalse(getToken().parse(
+ primaryContext,
+ primaryProf,
+ getSubTokenString() + prefix + "|" + getJoinCharacter()
+ + "TestWP1"));
+ assertTrue(primaryGraph.isEmpty());
+ }
+ }
+
+ @Test
+ public void testInvalidListDoubleJoin() throws PersistenceLayerException
+ {
+ if (isPrimitiveLegal())
+ {
+ construct(primaryContext, "TestWP1");
+ construct(primaryContext, "TestWP2");
+ assertFalse(getToken().parse(
+ primaryContext,
+ primaryProf,
+ getSubTokenString() + prefix + "|TestWP2" + getJoinCharacter()
+ + getJoinCharacter() + "TestWP1"));
+ assertTrue(primaryGraph.isEmpty());
+ }
+ }
+
+ @Test
+ public void testInvalidListStartDoubleJoin()
+ throws PersistenceLayerException
+ {
+ if (isPrimitiveLegal())
+ {
+ construct(primaryContext, "TestWP1");
+ construct(primaryContext, "TestWP2");
+ assertFalse(getToken().parse(
+ primaryContext,
+ primaryProf,
+ getSubTokenString() + getJoinCharacter() + prefix + "|TestWP2"
+ + getJoinCharacter() + "TestWP1"));
+ assertTrue(primaryGraph.isEmpty());
+ }
+ }
+
+ @Test
+ public void testInvalidInputCheckMult() throws PersistenceLayerException
+ {
+ if (isPrimitiveLegal())
+ {
+ // Explicitly do NOT build TestWP2
+ construct(primaryContext, "TestWP1");
+ boolean parse =
+ getToken().parse(
+ primaryContext,
+ primaryProf,
+ getSubTokenString() + prefix + "|TestWP1"
+ + getJoinCharacter() + "TestWP2");
+ if (parse)
+ {
+ assertEquals(!requiresConstruction(), primaryContext.ref
+ .validate());
+ }
+ else
+ {
+ assertTrue(requiresConstruction());
+ }
+ }
+ }
+
+ @Test
+ public void testInvalidInputCheckTypeEqualLength()
+ throws PersistenceLayerException
+ {
+ if (isPrimitiveLegal() && isTypeLegal())
+ {
+ // Explicitly do NOT build TestWP2 (this checks that the TYPE=
+ // doesn't
+ // consume the |
+ construct(primaryContext, "TestWP1");
+ assertTrue(getToken().parse(
+ primaryContext,
+ primaryProf,
+ getSubTokenString() + prefix + "|TestWP1" + getJoinCharacter()
+ + "TYPE=TestType" + getJoinCharacter() + "TestWP2"));
+ assertFalse(primaryContext.ref.validate());
+ }
+ }
+
+ @Test
+ public void testInvalidInputCheckTypeDotLength()
+ throws PersistenceLayerException
+ {
+ if (isPrimitiveLegal() && isTypeLegal())
+ {
+ // Explicitly do NOT build TestWP2 (this checks that the TYPE=
+ // doesn't
+ // consume the |
+ construct(primaryContext, "TestWP1");
+ assertTrue(getToken().parse(
+ primaryContext,
+ primaryProf,
+ getSubTokenString() + prefix + "|TestWP1" + getJoinCharacter()
+ + "TYPE.TestType.OtherTestType" + getJoinCharacter()
+ + "TestWP2"));
+ assertFalse(primaryContext.ref.validate());
+ }
+ }
+
+ @Test
+ public void testValidInputs() throws PersistenceLayerException
+ {
+ if (isPrimitiveLegal())
+ {
+ construct(primaryContext, "TestWP1");
+ construct(primaryContext, "TestWP2");
+ construct(primaryContext, "TestWP3");
+ assertTrue(getToken().parse(primaryContext, primaryProf,
+ getSubTokenString() + prefix + "|TestWP1"));
+ assertTrue(primaryContext.ref.validate());
+ assertTrue(getToken().parse(
+ primaryContext,
+ primaryProf,
+ getSubTokenString() + prefix + "|TestWP1" + getJoinCharacter()
+ + "TestWP2"));
+ assertTrue(primaryContext.ref.validate());
+ }
+ if (isTypeLegal())
+ {
+ assertTrue(getToken().parse(primaryContext, primaryProf,
+ getSubTokenString() + prefix + "|TYPE=TestType"));
+ assertTrue(primaryContext.ref.validate());
+ assertTrue(getToken().parse(primaryContext, primaryProf,
+ getSubTokenString() + prefix + "|TYPE.TestType"));
+ assertTrue(primaryContext.ref.validate());
+ if (isPrimitiveLegal())
+ {
+ assertTrue(getToken().parse(
+ primaryContext,
+ primaryProf,
+ getSubTokenString() + prefix + "|TestWP1"
+ + getJoinCharacter() + "TestWP2" + getJoinCharacter()
+ + "TYPE=TestType"));
+ assertTrue(primaryContext.ref.validate());
+ assertTrue(getToken().parse(
+ primaryContext,
+ primaryProf,
+ getSubTokenString() + prefix + "|TestWP1"
+ + getJoinCharacter() + "TestWP2" + getJoinCharacter()
+ + "TYPE=TestType.OtherTestType"));
+ assertTrue(primaryContext.ref.validate());
+ }
+ }
+ }
+
+ @Test
+ public void testRoundRobinOne() throws PersistenceLayerException
+ {
+ if (isPrimitiveLegal())
+ {
+ construct(primaryContext, "TestWP1");
+ construct(primaryContext, "TestWP2");
+ construct(secondaryContext, "TestWP1");
+ construct(secondaryContext, "TestWP2");
+ runRoundRobin(getSubTokenString() + prefix + "|TestWP1");
+ assertTrue(primaryContext.ref.validate());
+ assertTrue(secondaryContext.ref.validate());
+ }
+ }
+
+ @Test
+ public void testRoundRobinAny() throws PersistenceLayerException
+ {
+ if (isAnyLegal())
+ {
+ construct(primaryContext, "TestWP1");
+ construct(primaryContext, "TestWP2");
+ construct(secondaryContext, "TestWP1");
+ construct(secondaryContext, "TestWP2");
+ runRoundRobin(getSubTokenString() + prefix + "|ANY");
+ assertTrue(primaryContext.ref.validate());
+ assertTrue(secondaryContext.ref.validate());
+ }
+ }
+
+ @Test
+ public void testRoundRobinThree() throws PersistenceLayerException
+ {
+ if (isPrimitiveLegal())
+ {
+ construct(primaryContext, "TestWP1");
+ construct(primaryContext, "TestWP2");
+ construct(primaryContext, "TestWP3");
+ construct(secondaryContext, "TestWP1");
+ construct(secondaryContext, "TestWP2");
+ construct(secondaryContext, "TestWP3");
+ runRoundRobin(getSubTokenString() + prefix + "|TestWP1"
+ + getJoinCharacter() + "TestWP2" + getJoinCharacter()
+ + "TestWP3");
+ assertTrue(primaryContext.ref.validate());
+ assertTrue(secondaryContext.ref.validate());
+ }
+ }
+
+ @Test
+ public void testRoundRobinWithEqualType() throws PersistenceLayerException
+ {
+ if (isPrimitiveLegal())
+ {
+ if (isTypeLegal())
+ {
+ construct(primaryContext, "TestWP1");
+ construct(primaryContext, "TestWP2");
+ construct(secondaryContext, "TestWP1");
+ construct(secondaryContext, "TestWP2");
+ runRoundRobin(getSubTokenString() + prefix + "|TestWP1"
+ + getJoinCharacter() + "TestWP2" + getJoinCharacter()
+ + "TYPE=OtherTestType" + getJoinCharacter()
+ + "TYPE=TestType");
+ assertTrue(primaryContext.ref.validate());
+ assertTrue(secondaryContext.ref.validate());
+ }
+ }
+ }
+
+ @Test
+ public void testRoundRobinTestEquals() throws PersistenceLayerException
+ {
+ if (isTypeLegal())
+ {
+ runRoundRobin(getSubTokenString() + prefix + "|TYPE=TestType");
+ assertTrue(primaryContext.ref.validate());
+ assertTrue(secondaryContext.ref.validate());
+ }
+ }
+
+ @Test
+ public void testRoundRobinTestEqualThree() throws PersistenceLayerException
+ {
+ if (isTypeLegal())
+ {
+ runRoundRobin(getSubTokenString() + prefix
+ + "|TYPE=TestAltType.TestThirdType.TestType");
+ assertTrue(primaryContext.ref.validate());
+ assertTrue(secondaryContext.ref.validate());
+ }
+ }
+
+ protected void construct(LoadContext loadContext, String one)
+ {
+ loadContext.ref.constructCDOMObject(getSubTokenType(), one);
+ }
+
+ @Override
+ public GlobalLstToken getToken()
+ {
+ return token;
+ }
+
+}
Added: branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/AbstractEmptyChooseTokenTestCase.java
===================================================================
--- branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/AbstractEmptyChooseTokenTestCase.java (rev 0)
+++ branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/AbstractEmptyChooseTokenTestCase.java 2007-09-30 21:28:38 UTC (rev 4200)
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2007 Tom Parker <th...@us...>
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+package plugin.lsttokens.oldchoose;
+
+import java.net.URISyntaxException;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import pcgen.core.PObject;
+import pcgen.persistence.PersistenceLayerException;
+import pcgen.persistence.lst.ChooseLstToken;
+import pcgen.persistence.lst.GlobalLstToken;
+import plugin.lsttokens.ChooseLst;
+import plugin.lsttokens.testsupport.AbstractGlobalTokenTestCase;
+import plugin.lsttokens.testsupport.TokenRegistration;
+
+public abstract class AbstractEmptyChooseTokenTestCase extends
+ AbstractGlobalTokenTestCase
+{
+
+ static ChooseLst token = new ChooseLst();
+
+ @Override
+ @Before
+ public void setUp() throws PersistenceLayerException, URISyntaxException
+ {
+ super.setUp();
+ TokenRegistration.register(getSubToken());
+ }
+
+ protected abstract ChooseLstToken getSubToken();
+
+ protected abstract <T extends PObject> Class<T> getSubTokenType();
+
+ public String getSubTokenString()
+ {
+ return getSubToken().getTokenName();
+ }
+
+ @Test
+ public void testInvalidInputString() throws PersistenceLayerException
+ {
+ assertFalse(getToken().parse(primaryContext, primaryProf,
+ getSubTokenString() + "|String"));
+ }
+
+ @Test
+ public void testRoundRobinOne() throws PersistenceLayerException
+ {
+ runRoundRobin(getSubTokenString());
+ assertTrue(primaryContext.ref.validate());
+ assertTrue(secondaryContext.ref.validate());
+ }
+
+ @Override
+ public GlobalLstToken getToken()
+ {
+ return token;
+ }
+
+}
Added: branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/ArmorProfTokenTest.java
===================================================================
--- branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/ArmorProfTokenTest.java (rev 0)
+++ branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/ArmorProfTokenTest.java 2007-09-30 21:28:38 UTC (rev 4200)
@@ -0,0 +1,92 @@
+package plugin.lsttokens.oldchoose;
+
+import java.net.URISyntaxException;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import pcgen.core.Equipment;
+import pcgen.core.PCTemplate;
+import pcgen.persistence.PersistenceLayerException;
+import pcgen.persistence.lst.ChooseLstToken;
+import pcgen.persistence.lst.LstObjectFileLoader;
+import pcgen.persistence.lst.PCTemplateLoader;
+import plugin.lsttokens.choose.ArmorProfToken;
+
+public class ArmorProfTokenTest extends AbstractChooseTokenTestCase
+{
+
+ static PCTemplateLoader loader = new PCTemplateLoader();
+
+ @Before
+ @Override
+ public void setUp() throws PersistenceLayerException, URISyntaxException
+ {
+ super.setUp();
+ this.setPrefix("|1");
+ }
+
+ static ArmorProfToken subToken = new ArmorProfToken();
+
+ @Override
+ protected ChooseLstToken getSubToken()
+ {
+ return subToken;
+ }
+
+ @Override
+ public LstObjectFileLoader<PCTemplate> getLoader()
+ {
+ return loader;
+ }
+
+ @Override
+ protected Class<Equipment> getSubTokenType()
+ {
+ return Equipment.class;
+ }
+
+ @Override
+ public Class<PCTemplate> getCDOMClass()
+ {
+ return PCTemplate.class;
+ }
+
+ @Override
+ protected boolean isAnyLegal()
+ {
+ return true;
+ }
+
+ @Override
+ protected boolean isTypeLegal()
+ {
+ return true;
+ }
+
+ @Override
+ protected char getJoinCharacter()
+ {
+ return '|';
+ }
+
+ @Override
+ protected boolean isPrimitiveLegal()
+ {
+ return true;
+ }
+
+ @Override
+ protected boolean requiresConstruction()
+ {
+ return true;
+ }
+
+ @Test
+ public void testInvalidCountNaN() throws PersistenceLayerException
+ {
+ assertFalse(getToken().parse(primaryContext, primaryProf,
+ getSubTokenString() + "|x|String"));
+ }
+
+}
Added: branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/ArmorTypeTokenTest.java
===================================================================
--- branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/ArmorTypeTokenTest.java (rev 0)
+++ branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/ArmorTypeTokenTest.java 2007-09-30 21:28:38 UTC (rev 4200)
@@ -0,0 +1,40 @@
+package plugin.lsttokens.oldchoose;
+
+import pcgen.core.PCTemplate;
+import pcgen.core.PObject;
+import pcgen.persistence.lst.ChooseLstToken;
+import pcgen.persistence.lst.LstObjectFileLoader;
+import pcgen.persistence.lst.PCTemplateLoader;
+import plugin.lsttokens.choose.ArmorTypeToken;
+
+public class ArmorTypeTokenTest extends AbstractEmptyChooseTokenTestCase
+{
+ static PCTemplateLoader loader = new PCTemplateLoader();
+
+ static ArmorTypeToken subToken = new ArmorTypeToken();
+
+ @Override
+ protected ChooseLstToken getSubToken()
+ {
+ return subToken;
+ }
+
+ @Override
+ protected <T extends PObject> Class<T> getSubTokenType()
+ {
+ return null;
+ }
+
+ @Override
+ public Class<PCTemplate> getCDOMClass()
+ {
+ return PCTemplate.class;
+ }
+
+ @Override
+ public LstObjectFileLoader<PCTemplate> getLoader()
+ {
+ return loader;
+ }
+
+}
Added: branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/CCSkillListTokenTest.java
===================================================================
--- branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/CCSkillListTokenTest.java (rev 0)
+++ branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/CCSkillListTokenTest.java 2007-09-30 21:28:38 UTC (rev 4200)
@@ -0,0 +1,170 @@
+package plugin.lsttokens.oldchoose;
+
+import org.junit.Test;
+
+import pcgen.core.PCTemplate;
+import pcgen.core.Skill;
+import pcgen.persistence.PersistenceLayerException;
+import pcgen.persistence.lst.ChooseLstToken;
+import pcgen.persistence.lst.LstObjectFileLoader;
+import pcgen.persistence.lst.PCTemplateLoader;
+import plugin.lsttokens.choose.CCSkillListToken;
+
+public class CCSkillListTokenTest extends AbstractChooseTokenTestCase
+{
+
+ static PCTemplateLoader loader = new PCTemplateLoader();
+
+ static CCSkillListToken subToken = new CCSkillListToken();
+
+ @Override
+ protected ChooseLstToken getSubToken()
+ {
+ return subToken;
+ }
+
+ @Override
+ public LstObjectFileLoader<PCTemplate> getLoader()
+ {
+ return loader;
+ }
+
+ @Override
+ protected Class<Skill> getSubTokenType()
+ {
+ return Skill.class;
+ }
+
+ @Override
+ public Class<PCTemplate> getCDOMClass()
+ {
+ return PCTemplate.class;
+ }
+
+ @Override
+ protected boolean isAnyLegal()
+ {
+ return true;
+ }
+
+ @Override
+ protected boolean isPrimitiveLegal()
+ {
+ return true;
+ }
+
+ @Override
+ protected boolean isTypeLegal()
+ {
+ return false;
+ }
+
+ protected boolean isListLegal()
+ {
+ return true;
+ }
+
+ @Override
+ protected char getJoinCharacter()
+ {
+ return ',';
+ }
+
+ @Override
+ protected boolean requiresConstruction()
+ {
+ return true;
+ }
+
+ @Test
+ public void testInvalidInputAnyList() throws PersistenceLayerException
+ {
+ if (isListLegal() && isAnyLegal())
+ {
+ construct(primaryContext, "TestWP1");
+ assertFalse(getToken().parse(primaryContext, primaryProf,
+ getSubTokenString() + "|ANY" + getJoinCharacter() + "LIST"));
+ assertTrue(primaryGraph.isEmpty());
+ }
+ }
+
+ @Test
+ public void testInvalidInputListAny() throws PersistenceLayerException
+ {
+ if (isListLegal() && isAnyLegal())
+ {
+ construct(primaryContext, "TestWP1");
+ assertFalse(getToken().parse(primaryContext, primaryProf,
+ getSubTokenString() + "|LIST" + getJoinCharacter() + "ANY"));
+ assertTrue(primaryGraph.isEmpty());
+ }
+ }
+
+ @Test
+ public void testInvalidInputListItem() throws PersistenceLayerException
+ {
+ if (isPrimitiveLegal() && isListLegal())
+ {
+ construct(primaryContext, "TestWP1");
+ assertFalse(getToken().parse(primaryContext, primaryProf,
+ getSubTokenString() + "|LIST" + getJoinCharacter() + "TestWP1"));
+ assertTrue(primaryGraph.isEmpty());
+ }
+ }
+
+ @Test
+ public void testInvalidInputItemList() throws PersistenceLayerException
+ {
+ if (isPrimitiveLegal() && isListLegal())
+ {
+ construct(primaryContext, "TestWP1");
+ assertFalse(getToken().parse(primaryContext, primaryProf,
+ getSubTokenString() + "|TestWP1" + getJoinCharacter() + "LIST"));
+ assertTrue(primaryGraph.isEmpty());
+ }
+ }
+
+ //
+ // @Test
+ // public void testInvalidInputListType() throws PersistenceLayerException
+ // {
+ // if (isListLegal() && isTypeLegal())
+ // {
+ // assertFalse(getToken().parse(
+ // primaryContext,
+ // primaryProf,
+ // getSubTokenString() + "|LIST" + getJoinCharacter()
+ // + "TYPE=TestType"));
+ // assertTrue(primaryGraph.isEmpty());
+ // }
+ // }
+ //
+ // @Test
+ // public void testInvalidInputTypeList() throws PersistenceLayerException
+ // {
+ // if (isListLegal() && isTypeLegal())
+ // {
+ // assertFalse(getToken().parse(
+ // primaryContext,
+ // primaryProf,
+ // getSubTokenString() + "|TYPE=TestType" + getJoinCharacter()
+ // + "LIST"));
+ // assertTrue(primaryGraph.isEmpty());
+ // }
+ // }
+
+ @Test
+ public void testRoundRobinList() throws PersistenceLayerException
+ {
+ if (isListLegal())
+ {
+ construct(primaryContext, "TestWP1");
+ construct(primaryContext, "TestWP2");
+ construct(secondaryContext, "TestWP1");
+ construct(secondaryContext, "TestWP2");
+ runRoundRobin(getSubTokenString() + "|LIST");
+ assertTrue(primaryContext.ref.validate());
+ assertTrue(secondaryContext.ref.validate());
+ }
+ }
+}
Added: branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/CSkillsTokenTest.java
===================================================================
--- branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/CSkillsTokenTest.java (rev 0)
+++ branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/CSkillsTokenTest.java 2007-09-30 21:28:38 UTC (rev 4200)
@@ -0,0 +1,40 @@
+package plugin.lsttokens.oldchoose;
+
+import pcgen.core.Equipment;
+import pcgen.core.PCTemplate;
+import pcgen.persistence.lst.ChooseLstToken;
+import pcgen.persistence.lst.LstObjectFileLoader;
+import pcgen.persistence.lst.PCTemplateLoader;
+import plugin.lsttokens.choose.CSkillsToken;
+
+public class CSkillsTokenTest extends AbstractEmptyChooseTokenTestCase
+{
+
+ static PCTemplateLoader loader = new PCTemplateLoader();
+
+ static CSkillsToken subToken = new CSkillsToken();
+
+ @Override
+ protected ChooseLstToken getSubToken()
+ {
+ return subToken;
+ }
+
+ @Override
+ public LstObjectFileLoader<PCTemplate> getLoader()
+ {
+ return loader;
+ }
+
+ @Override
+ protected Class<Equipment> getSubTokenType()
+ {
+ return Equipment.class;
+ }
+
+ @Override
+ public Class<PCTemplate> getCDOMClass()
+ {
+ return PCTemplate.class;
+ }
+}
Added: branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/DomainTokenTest.java
===================================================================
--- branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/DomainTokenTest.java (rev 0)
+++ branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/DomainTokenTest.java 2007-09-30 21:28:38 UTC (rev 4200)
@@ -0,0 +1,131 @@
+package plugin.lsttokens.oldchoose;
+
+import org.junit.Test;
+
+import pcgen.core.Deity;
+import pcgen.core.Domain;
+import pcgen.core.PCTemplate;
+import pcgen.persistence.PersistenceLayerException;
+import pcgen.persistence.lst.ChooseLstToken;
+import pcgen.persistence.lst.LstObjectFileLoader;
+import pcgen.persistence.lst.PCTemplateLoader;
+import plugin.lsttokens.choose.DomainToken;
+
+public class DomainTokenTest extends AbstractChooseTokenTestCase
+{
+
+ static PCTemplateLoader loader = new PCTemplateLoader();
+
+ static DomainToken subToken = new DomainToken();
+
+ @Override
+ protected ChooseLstToken getSubToken()
+ {
+ return subToken;
+ }
+
+ @Override
+ public LstObjectFileLoader<PCTemplate> getLoader()
+ {
+ return loader;
+ }
+
+ @Override
+ protected Class<Domain> getSubTokenType()
+ {
+ return Domain.class;
+ }
+
+ @Override
+ public Class<PCTemplate> getCDOMClass()
+ {
+ return PCTemplate.class;
+ }
+
+ @Override
+ protected boolean isAnyLegal()
+ {
+ return true;
+ }
+
+ @Override
+ protected boolean isPrimitiveLegal()
+ {
+ return true;
+ }
+
+ @Override
+ protected boolean isTypeLegal()
+ {
+ return false;
+ }
+
+ @Override
+ protected char getJoinCharacter()
+ {
+ return ',';
+ }
+
+ @Override
+ protected boolean requiresConstruction()
+ {
+ return true;
+ }
+
+ @Test
+ public void testInvalidInputDeityEmpty() throws PersistenceLayerException
+ {
+ if (isTypeLegal())
+ {
+ assertFalse(getToken().parse(primaryContext, primaryProf,
+ getSubTokenString() + "|DEITY="));
+ assertTrue(primaryGraph.isEmpty());
+ }
+ }
+
+ @Test
+ public void testRoundRobinDeity() throws PersistenceLayerException
+ {
+ primaryContext.ref.constructCDOMObject(Deity.class, "Zeus");
+ secondaryContext.ref.constructCDOMObject(Deity.class, "Zeus");
+ runRoundRobin(getSubTokenString() + "|DEITY=Zeus");
+ assertTrue(primaryContext.ref.validate());
+ assertTrue(secondaryContext.ref.validate());
+ }
+
+ @Test
+ public void testRoundRobinQualify() throws PersistenceLayerException
+ {
+ construct(primaryContext, "TestWP1");
+ construct(primaryContext, "TestWP2");
+ construct(secondaryContext, "TestWP1");
+ construct(secondaryContext, "TestWP2");
+ runRoundRobin(getSubTokenString() + "|QUALIFY");
+ assertTrue(primaryContext.ref.validate());
+ assertTrue(secondaryContext.ref.validate());
+ }
+
+ @Test
+ public void testRoundRobinPC() throws PersistenceLayerException
+ {
+ construct(primaryContext, "TestWP1");
+ construct(primaryContext, "TestWP2");
+ construct(secondaryContext, "TestWP1");
+ construct(secondaryContext, "TestWP2");
+ runRoundRobin(getSubTokenString() + "|PC");
+ assertTrue(primaryContext.ref.validate());
+ assertTrue(secondaryContext.ref.validate());
+ }
+
+ @Test
+ public void testRoundRobinComplex() throws PersistenceLayerException
+ {
+ construct(primaryContext, "TestWP1");
+ construct(primaryContext, "TestWP2");
+ construct(secondaryContext, "TestWP1");
+ construct(secondaryContext, "TestWP2");
+ runRoundRobin(getSubTokenString() + "|PC,QUALIFY,TestWP1");
+ assertTrue(primaryContext.ref.validate());
+ assertTrue(secondaryContext.ref.validate());
+ }
+}
Added: branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/EquipTypeTokenTest.java
===================================================================
--- branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/EquipTypeTokenTest.java (rev 0)
+++ branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/EquipTypeTokenTest.java 2007-09-30 21:28:38 UTC (rev 4200)
@@ -0,0 +1,72 @@
+package plugin.lsttokens.oldchoose;
+
+import pcgen.core.Domain;
+import pcgen.core.PCTemplate;
+import pcgen.persistence.lst.ChooseLstToken;
+import pcgen.persistence.lst.LstObjectFileLoader;
+import pcgen.persistence.lst.PCTemplateLoader;
+import plugin.lsttokens.choose.EquipTypeToken;
+
+public class EquipTypeTokenTest extends AbstractChooseTokenTestCase
+{
+
+ static PCTemplateLoader loader = new PCTemplateLoader();
+
+ static EquipTypeToken subToken = new EquipTypeToken();
+
+ @Override
+ protected ChooseLstToken getSubToken()
+ {
+ return subToken;
+ }
+
+ @Override
+ public LstObjectFileLoader<PCTemplate> getLoader()
+ {
+ return loader;
+ }
+
+ @Override
+ protected Class<Domain> getSubTokenType()
+ {
+ return Domain.class;
+ }
+
+ @Override
+ public Class<PCTemplate> getCDOMClass()
+ {
+ return PCTemplate.class;
+ }
+
+ @Override
+ protected boolean isAnyLegal()
+ {
+ return false;
+ }
+
+ @Override
+ protected boolean isPrimitiveLegal()
+ {
+ return true;
+ }
+
+
+
+ @Override
+ protected boolean isTypeLegal()
+ {
+ return false;
+ }
+
+ @Override
+ protected char getJoinCharacter()
+ {
+ return '.';
+ }
+
+ @Override
+ protected boolean requiresConstruction()
+ {
+ return false;
+ }
+}
Added: branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/FeatAddTokenTest.java
===================================================================
--- branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/FeatAddTokenTest.java (rev 0)
+++ branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/FeatAddTokenTest.java 2007-09-30 21:28:38 UTC (rev 4200)
@@ -0,0 +1,80 @@
+package plugin.lsttokens.oldchoose;
+
+import pcgen.cdom.enumeration.AbilityCategory;
+import pcgen.core.Ability;
+import pcgen.core.PCTemplate;
+import pcgen.persistence.LoadContext;
+import pcgen.persistence.lst.ChooseLstToken;
+import pcgen.persistence.lst.LstObjectFileLoader;
+import pcgen.persistence.lst.PCTemplateLoader;
+import plugin.lsttokens.choose.FeatAddToken;
+
+public class FeatAddTokenTest extends AbstractChooseTokenTestCase
+{
+
+ static PCTemplateLoader loader = new PCTemplateLoader();
+
+ static FeatAddToken subToken = new FeatAddToken();
+
+ @Override
+ protected ChooseLstToken getSubToken()
+ {
+ return subToken;
+ }
+
+ @Override
+ public LstObjectFileLoader<PCTemplate> getLoader()
+ {
+ return loader;
+ }
+
+ @Override
+ protected Class<Ability> getSubTokenType()
+ {
+ return Ability.class;
+ }
+
+ @Override
+ protected void construct(LoadContext loadContext, String one)
+ {
+ Ability obj =
+ loadContext.ref.constructCDOMObject(getSubTokenType(), one);
+ loadContext.ref.reassociateReference(AbilityCategory.FEAT, obj);
+ }
+
+ @Override
+ public Class<PCTemplate> getCDOMClass()
+ {
+ return PCTemplate.class;
+ }
+
+ @Override
+ protected boolean isAnyLegal()
+ {
+ return true;
+ }
+
+ @Override
+ protected boolean isTypeLegal()
+ {
+ return true;
+ }
+
+ @Override
+ protected char getJoinCharacter()
+ {
+ return '|';
+ }
+
+ @Override
+ protected boolean isPrimitiveLegal()
+ {
+ return true;
+ }
+
+ @Override
+ protected boolean requiresConstruction()
+ {
+ return true;
+ }
+}
Added: branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/FeatListTokenTest.java
===================================================================
--- branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/FeatListTokenTest.java (rev 0)
+++ branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/FeatListTokenTest.java 2007-09-30 21:28:38 UTC (rev 4200)
@@ -0,0 +1,80 @@
+package plugin.lsttokens.oldchoose;
+
+import pcgen.cdom.enumeration.AbilityCategory;
+import pcgen.core.Ability;
+import pcgen.core.PCTemplate;
+import pcgen.persistence.LoadContext;
+import pcgen.persistence.lst.ChooseLstToken;
+import pcgen.persistence.lst.LstObjectFileLoader;
+import pcgen.persistence.lst.PCTemplateLoader;
+import plugin.lsttokens.choose.FeatListToken;
+
+public class FeatListTokenTest extends AbstractChooseTokenTestCase
+{
+
+ static PCTemplateLoader loader = new PCTemplateLoader();
+
+ static FeatListToken subToken = new FeatListToken();
+
+ @Override
+ protected ChooseLstToken getSubToken()
+ {
+ return subToken;
+ }
+
+ @Override
+ public LstObjectFileLoader<PCTemplate> getLoader()
+ {
+ return loader;
+ }
+
+ @Override
+ protected Class<Ability> getSubTokenType()
+ {
+ return Ability.class;
+ }
+
+ @Override
+ protected void construct(LoadContext loadContext, String one)
+ {
+ Ability obj =
+ loadContext.ref.constructCDOMObject(getSubTokenType(), one);
+ loadContext.ref.reassociateReference(AbilityCategory.FEAT, obj);
+ }
+
+ @Override
+ public Class<PCTemplate> getCDOMClass()
+ {
+ return PCTemplate.class;
+ }
+
+ @Override
+ protected boolean isAnyLegal()
+ {
+ return true;
+ }
+
+ @Override
+ protected boolean isTypeLegal()
+ {
+ return true;
+ }
+
+ @Override
+ protected char getJoinCharacter()
+ {
+ return '|';
+ }
+
+ @Override
+ protected boolean isPrimitiveLegal()
+ {
+ return true;
+ }
+
+ @Override
+ protected boolean requiresConstruction()
+ {
+ return true;
+ }
+}
Added: branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/FeatSelectTokenTest.java
===================================================================
--- branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/FeatSelectTokenTest.java (rev 0)
+++ branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/FeatSelectTokenTest.java 2007-09-30 21:28:38 UTC (rev 4200)
@@ -0,0 +1,80 @@
+package plugin.lsttokens.oldchoose;
+
+import pcgen.cdom.enumeration.AbilityCategory;
+import pcgen.core.Ability;
+import pcgen.core.PCTemplate;
+import pcgen.persistence.LoadContext;
+import pcgen.persistence.lst.ChooseLstToken;
+import pcgen.persistence.lst.LstObjectFileLoader;
+import pcgen.persistence.lst.PCTemplateLoader;
+import plugin.lsttokens.choose.FeatSelectToken;
+
+public class FeatSelectTokenTest extends AbstractChooseTokenTestCase
+{
+
+ static PCTemplateLoader loader = new PCTemplateLoader();
+
+ static FeatSelectToken subToken = new FeatSelectToken();
+
+ @Override
+ protected ChooseLstToken getSubToken()
+ {
+ return subToken;
+ }
+
+ @Override
+ public LstObjectFileLoader<PCTemplate> getLoader()
+ {
+ return loader;
+ }
+
+ @Override
+ protected Class<Ability> getSubTokenType()
+ {
+ return Ability.class;
+ }
+
+ @Override
+ protected void construct(LoadContext loadContext, String one)
+ {
+ Ability obj =
+ loadContext.ref.constructCDOMObject(getSubTokenType(), one);
+ loadContext.ref.reassociateReference(AbilityCategory.FEAT, obj);
+ }
+
+ @Override
+ public Class<PCTemplate> getCDOMClass()
+ {
+ return PCTemplate.class;
+ }
+
+ @Override
+ protected boolean isAnyLegal()
+ {
+ return true;
+ }
+
+ @Override
+ protected boolean isTypeLegal()
+ {
+ return true;
+ }
+
+ @Override
+ protected char getJoinCharacter()
+ {
+ return '|';
+ }
+
+ @Override
+ protected boolean isPrimitiveLegal()
+ {
+ return true;
+ }
+
+ @Override
+ protected boolean requiresConstruction()
+ {
+ return true;
+ }
+}
Added: branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/NoChoiceTokenTest.java
===================================================================
--- branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/NoChoiceTokenTest.java (rev 0)
+++ branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/NoChoiceTokenTest.java 2007-09-30 21:28:38 UTC (rev 4200)
@@ -0,0 +1,41 @@
+package plugin.lsttokens.oldchoose;
+
+import pcgen.core.PCTemplate;
+import pcgen.core.PObject;
+import pcgen.persistence.lst.ChooseLstToken;
+import pcgen.persistence.lst.LstObjectFileLoader;
+import pcgen.persistence.lst.PCTemplateLoader;
+import plugin.lsttokens.choose.NoChoiceToken;
+
+public class NoChoiceTokenTest extends AbstractEmptyChooseTokenTestCase
+{
+
+ static PCTemplateLoader loader = new PCTemplateLoader();
+
+ static NoChoiceToken subToken = new NoChoiceToken();
+
+ @Override
+ protected ChooseLstToken getSubToken()
+ {
+ return subToken;
+ }
+
+ @Override
+ protected <T extends PObject> Class<T> getSubTokenType()
+ {
+ return null;
+ }
+
+ @Override
+ public Class<PCTemplate> getCDOMClass()
+ {
+ return PCTemplate.class;
+ }
+
+ @Override
+ public LstObjectFileLoader<PCTemplate> getLoader()
+ {
+ return loader;
+ }
+
+}
Added: branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/ShieldProfTokenTest.java
===================================================================
--- branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/ShieldProfTokenTest.java (rev 0)
+++ branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/ShieldProfTokenTest.java 2007-09-30 21:28:38 UTC (rev 4200)
@@ -0,0 +1,70 @@
+package plugin.lsttokens.oldchoose;
+
+import pcgen.core.Equipment;
+import pcgen.core.PCTemplate;
+import pcgen.persistence.lst.ChooseLstToken;
+import pcgen.persistence.lst.LstObjectFileLoader;
+import pcgen.persistence.lst.PCTemplateLoader;
+import plugin.lsttokens.choose.ShieldProfToken;
+
+public class ShieldProfTokenTest extends AbstractChooseTokenTestCase
+{
+
+ static PCTemplateLoader loader = new PCTemplateLoader();
+
+ static ShieldProfToken subToken = new ShieldProfToken();
+
+ @Override
+ protected ChooseLstToken getSubToken()
+ {
+ return subToken;
+ }
+
+ @Override
+ public LstObjectFileLoader<PCTemplate> getLoader()
+ {
+ return loader;
+ }
+
+ @Override
+ protected Class<Equipment> getSubTokenType()
+ {
+ return Equipment.class;
+ }
+
+ @Override
+ public Class<PCTemplate> getCDOMClass()
+ {
+ return PCTemplate.class;
+ }
+
+ @Override
+ protected boolean isAnyLegal()
+ {
+ return false;
+ }
+
+ @Override
+ protected boolean isTypeLegal()
+ {
+ return true;
+ }
+
+ @Override
+ protected char getJoinCharacter()
+ {
+ return '|';
+ }
+
+ @Override
+ protected boolean isPrimitiveLegal()
+ {
+ return true;
+ }
+
+ @Override
+ protected boolean requiresConstruction()
+ {
+ return true;
+ }
+}
Added: branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/SkillsNamedToCCSkillTokenTest.java
===================================================================
--- branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/SkillsNamedToCCSkillTokenTest.java (rev 0)
+++ branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/SkillsNamedToCCSkillTokenTest.java 2007-09-30 21:28:38 UTC (rev 4200)
@@ -0,0 +1,111 @@
+package plugin.lsttokens.oldchoose;
+
+import org.junit.Test;
+
+import pcgen.core.PCTemplate;
+import pcgen.core.Skill;
+import pcgen.persistence.PersistenceLayerException;
+import pcgen.persistence.lst.ChooseLstToken;
+import pcgen.persistence.lst.LstObjectFileLoader;
+import pcgen.persistence.lst.PCTemplateLoader;
+import plugin.lsttokens.choose.SkillsNamedToCCSkillToken;
+
+public class SkillsNamedToCCSkillTokenTest extends AbstractChooseTokenTestCase
+{
+
+ static PCTemplateLoader loader = new PCTemplateLoader();
+
+ static SkillsNamedToCCSkillToken subToken = new SkillsNamedToCCSkillToken();
+
+ @Override
+ protected ChooseLstToken getSubToken()
+ {
+ return subToken;
+ }
+
+ @Override
+ public LstObjectFileLoader<PCTemplate> getLoader()
+ {
+ return loader;
+ }
+
+ @Override
+ protected Class<Skill> getSubTokenType()
+ {
+ return Skill.class;
+ }
+
+ @Override
+ public Class<PCTemplate> getCDOMClass()
+ {
+ return PCTemplate.class;
+ }
+
+ @Override
+ protected boolean isAnyLegal()
+ {
+ return true;
+ }
+
+ @Override
+ protected boolean isTypeLegal()
+ {
+ return true;
+ }
+
+ @Override
+ protected char getJoinCharacter()
+ {
+ return '|';
+ }
+
+ @Override
+ protected boolean isPrimitiveLegal()
+ {
+ return true;
+ }
+
+ @Override
+ protected boolean requiresConstruction()
+ {
+ return true;
+ }
+
+ @Test
+ public void testRoundRobinClass() throws PersistenceLayerException
+ {
+ construct(primaryContext, "TestWP1");
+ construct(primaryContext, "TestWP2");
+ construct(secondaryContext, "TestWP1");
+ construct(secondaryContext, "TestWP2");
+ runRoundRobin(getSubTokenString() + "|CLASS");
+ assertTrue(primaryContext.ref.validate());
+ assertTrue(secondaryContext.ref.validate());
+ }
+
+ @Test
+ public void testRoundRobinCrossClass() throws PersistenceLayerException
+ {
+ construct(primaryContext, "TestWP1");
+ construct(primaryContext, "TestWP2");
+ construct(secondaryContext, "TestWP1");
+ construct(secondaryContext, "TestWP2");
+ runRoundRobin(getSubTokenString() + "|CROSSCLASS");
+ assertTrue(primaryContext.ref.validate());
+ assertTrue(secondaryContext.ref.validate());
+ }
+
+ @Test
+ public void testRoundRobinExclusive() throws PersistenceLayerException
+ {
+ construct(primaryContext, "TestWP1");
+ construct(primaryContext, "TestWP2");
+ construct(secondaryContext, "TestWP1");
+ construct(secondaryContext, "TestWP2");
+ runRoundRobin(getSubTokenString() + "|EXCLUSIVE");
+ assertTrue(primaryContext.ref.validate());
+ assertTrue(secondaryContext.ref.validate());
+ }
+
+ // TODO Complex combinations
+}
Added: branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/SkillsNamedToCSkillTokenTest.java
===================================================================
--- branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/SkillsNamedToCSkillTokenTest.java (rev 0)
+++ branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/SkillsNamedToCSkillTokenTest.java 2007-09-30 21:28:38 UTC (rev 4200)
@@ -0,0 +1,111 @@
+package plugin.lsttokens.oldchoose;
+
+import org.junit.Test;
+
+import pcgen.core.PCTemplate;
+import pcgen.core.Skill;
+import pcgen.persistence.PersistenceLayerException;
+import pcgen.persistence.lst.ChooseLstToken;
+import pcgen.persistence.lst.LstObjectFileLoader;
+import pcgen.persistence.lst.PCTemplateLoader;
+import plugin.lsttokens.choose.SkillsNamedToCSkillToken;
+
+public class SkillsNamedToCSkillTokenTest extends AbstractChooseTokenTestCase
+{
+
+ static PCTemplateLoader loader = new PCTemplateLoader();
+
+ static SkillsNamedToCSkillToken subToken = new SkillsNamedToCSkillToken();
+
+ @Override
+ protected ChooseLstToken getSubToken()
+ {
+ return subToken;
+ }
+
+ @Override
+ public LstObjectFileLoader<PCTemplate> getLoader()
+ {
+ return loader;
+ }
+
+ @Override
+ protected Class<Skill> getSubTokenType()
+ {
+ return Skill.class;
+ }
+
+ @Override
+ public Class<PCTemplate> getCDOMClass()
+ {
+ return PCTemplate.class;
+ }
+
+ @Override
+ protected boolean isAnyLegal()
+ {
+ return true;
+ }
+
+ @Override
+ protected boolean isTypeLegal()
+ {
+ return true;
+ }
+
+ @Override
+ protected char getJoinCharacter()
+ {
+ return '|';
+ }
+
+ @Override
+ protected boolean isPrimitiveLegal()
+ {
+ return true;
+ }
+
+ @Override
+ protected boolean requiresConstruction()
+ {
+ return true;
+ }
+
+ @Test
+ public void testRoundRobinClass() throws PersistenceLayerException
+ {
+ construct(primaryContext, "TestWP1");
+ construct(primaryContext, "TestWP2");
+ construct(secondaryContext, "TestWP1");
+ construct(secondaryContext, "TestWP2");
+ runRoundRobin(getSubTokenString() + "|CLASS");
+ assertTrue(primaryContext.ref.validate());
+ assertTrue(secondaryContext.ref.validate());
+ }
+
+ @Test
+ public void testRoundRobinCrossClass() throws PersistenceLayerException
+ {
+ construct(primaryContext, "TestWP1");
+ construct(primaryContext, "TestWP2");
+ construct(secondaryContext, "TestWP1");
+ construct(secondaryContext, "TestWP2");
+ runRoundRobin(getSubTokenString() + "|CROSSCLASS");
+ assertTrue(primaryContext.ref.validate());
+ assertTrue(secondaryContext.ref.validate());
+ }
+
+ @Test
+ public void testRoundRobinExclusive() throws PersistenceLayerException
+ {
+ construct(primaryContext, "TestWP1");
+ construct(primaryContext, "TestWP2");
+ construct(secondaryContext, "TestWP1");
+ construct(secondaryContext, "TestWP2");
+ runRoundRobin(getSubTokenString() + "|EXCLUSIVE");
+ assertTrue(primaryContext.ref.validate());
+ assertTrue(secondaryContext.ref.validate());
+ }
+
+ // TODO Complex combinations
+}
Added: branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/SkillsNamedTokenTest.java
===================================================================
--- branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/SkillsNamedTokenTest.java (rev 0)
+++ branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/SkillsNamedTokenTest.java 2007-09-30 21:28:38 UTC (rev 4200)
@@ -0,0 +1,111 @@
+package plugin.lsttokens.oldchoose;
+
+import org.junit.Test;
+
+import pcgen.core.PCTemplate;
+import pcgen.core.Skill;
+import pcgen.persistence.PersistenceLayerException;
+import pcgen.persistence.lst.ChooseLstToken;
+import pcgen.persistence.lst.LstObjectFileLoader;
+import pcgen.persistence.lst.PCTemplateLoader;
+import plugin.lsttokens.choose.SkillsNamedToken;
+
+public class SkillsNamedTokenTest extends AbstractChooseTokenTestCase
+{
+
+ static PCTemplateLoader loader = new PCTemplateLoader();
+
+ static SkillsNamedToken subToken = new SkillsNamedToken();
+
+ @Override
+ protected ChooseLstToken getSubToken()
+ {
+ return subToken;
+ }
+
+ @Override
+ public LstObjectFileLoader<PCTemplate> getLoader()
+ {
+ return loader;
+ }
+
+ @Override
+ protected Class<Skill> getSubTokenType()
+ {
+ return Skill.class;
+ }
+
+ @Override
+ public Class<PCTemplate> getCDOMClass()
+ {
+ return PCTemplate.class;
+ }
+
+ @Override
+ protected boolean isAnyLegal()
+ {
+ return true;
+ }
+
+ @Override
+ protected boolean isTypeLegal()
+ {
+ return true;
+ }
+
+ @Override
+ protected char getJoinCharacter()
+ {
+ return '|';
+ }
+
+ @Override
+ protected boolean isPrimitiveLegal()
+ {
+ return true;
+ }
+
+ @Override
+ protected boolean requiresConstruction()
+ {
+ return true;
+ }
+
+ @Test
+ public void testRoundRobinClass() throws PersistenceLayerException
+ {
+ construct(primaryContext, "TestWP1");
+ construct(primaryContext, "TestWP2");
+ construct(secondaryContext, "TestWP1");
+ construct(secondaryContext, "TestWP2");
+ runRoundRobin(getSubTokenString() + "|CLASS");
+ assertTrue(primaryContext.ref.validate());
+ assertTrue(secondaryContext.ref.validate());
+ }
+
+ @Test
+ public void testRoundRobinCrossClass() throws PersistenceLayerException
+ {
+ construct(primaryContext, "TestWP1");
+ construct(primaryContext, "TestWP2");
+ construct(secondaryContext, "TestWP1");
+ construct(secondaryContext, "TestWP2");
+ runRoundRobin(getSubTokenString() + "|CROSSCLASS");
+ assertTrue(primaryContext.ref.validate());
+ assertTrue(secondaryContext.ref.validate());
+ }
+
+ @Test
+ public void testRoundRobinExclusive() throws PersistenceLayerException
+ {
+ construct(primaryContext, "TestWP1");
+ construct(primaryContext, "TestWP2");
+ construct(secondaryContext, "TestWP1");
+ construct(secondaryContext, "TestWP2");
+ runRoundRobin(getSubTokenString() + "|EXCLUSIVE");
+ assertTrue(primaryContext.ref.validate());
+ assertTrue(secondaryContext.ref.validate());
+ }
+
+ // TODO Complex combinations
+}
Added: branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/SkillsTokenTest.java
===================================================================
--- branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/SkillsTokenTest.java (rev 0)
+++ branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/SkillsTokenTest.java 2007-09-30 21:28:38 UTC (rev 4200)
@@ -0,0 +1,40 @@
+package plugin.lsttokens.oldchoose;
+
+import pcgen.core.PCTemplate;
+import pcgen.core.Skill;
+import pcgen.persistence.lst.ChooseLstToken;
+import pcgen.persistence.lst.LstObjectFileLoader;
+import pcgen.persistence.lst.PCTemplateLoader;
+import plugin.lsttokens.choose.SkillsToken;
+
+public class SkillsTokenTest extends AbstractEmptyChooseTokenTestCase
+{
+ static PCTemplateLoader loader = new PCTemplateLoader();
+
+ static SkillsToken subToken = new SkillsToken();
+
+ @Override
+ protected ChooseLstToken getSubToken()
+ {
+ return subToken;
+ }
+
+ @Override
+ protected Class<Skill> getSubTokenType()
+ {
+ return Skill.class;
+ }
+
+ @Override
+ public Class<PCTemplate> getCDOMClass()
+ {
+ return PCTemplate.class;
+ }
+
+ @Override
+ public LstObjectFileLoader<PCTemplate> getLoader()
+ {
+ return loader;
+ }
+
+}
Added: branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/SpellClassesTokenTest.java
===================================================================
--- branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/SpellClassesTokenTest.java (rev 0)
+++ branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/SpellClassesTokenTest.java 2007-09-30 21:28:38 UTC (rev 4200)
@@ -0,0 +1,40 @@
+package plugin.lsttokens.oldchoose;
+
+import pcgen.core.PCTemplate;
+import pcgen.core.PObject;
+import pcgen.persistence.lst.ChooseLstToken;
+import pcgen.persistence.lst.LstObjectFileLoader;
+import pcgen.persistence.lst.PCTemplateLoader;
+import plugin.lsttokens.choose.SpellClassesToken;
+
+public class SpellClassesTokenTest extends AbstractEmptyChooseTokenTestCase
+{
+ static PCTemplateLoader loader = new PCTemplateLoader();
+
+ static SpellClassesToken subToken = new SpellClassesToken();
+
+ @Override
+ protected ChooseLstToken getSubToken()
+ {
+ return subToken;
+ }
+
+ @Override
+ protected <T extends PObject> Class<T> getSubTokenType()
+ {
+ return null;
+ }
+
+ @Override
+ public Class<PCTemplate> getCDOMClass()
+ {
+ return PCTemplate.class;
+ }
+
+ @Override
+ public LstObjectFileLoader<PCTemplate> getLoader()
+ {
+ return loader;
+ }
+
+}
Added: branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/SpellsTokenTest.java
===================================================================
--- branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/SpellsTokenTest.java (rev 0)
+++ branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/SpellsTokenTest.java 2007-09-30 21:28:38 UTC (rev 4200)
@@ -0,0 +1,100 @@
+package plugin.lsttokens.oldchoose;
+
+import java.net.URISyntaxException;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import pcgen.core.PCTemplate;
+import pcgen.persistence.PersistenceLayerException;
+import pcgen.persistence.lst.GlobalLstToken;
+import pcgen.persistence.lst.LstObjectFileLoader;
+import pcgen.persistence.lst.PCTemplateLoader;
+import plugin.lsttokens.ChooseLst;
+import plugin.lsttokens.choose.SpellsToken;
+import plugin.lsttokens.testsupport.AbstractGlobalTokenTestCase;
+import plugin.lsttokens.testsupport.TokenRegistration;
+
+public class SpellsTokenTest extends AbstractGlobalTokenTestCase
+{
+
+ static PCTemplateLoader loader = new PCTemplateLoader();
+
+ static ChooseLst token = new ChooseLst();
+
+ static SpellsToken subToken = new SpellsToken();
+
+ @Override
+ @Before
+ public void setUp() throws PersistenceLayerException, URISyntaxException
+ {
+ super.setUp();
+ TokenRegistration.register(subToken);
+ }
+
+ private String getSubTokenString()
+ {
+ return "SPELLS";
+ }
+
+ @Override
+ public LstObjectFileLoader<PCTemplate> getLoader()
+ {
+ return loader;
+ }
+
+ @Override
+ public Class<PCTemplate> getCDOMClass()
+ {
+ return PCTemplate.class;
+ }
+
+ @Override
+ public GlobalLstToken getToken()
+ {
+ return token;
+ }
+
+ @Test
+ public void testInvalidNoPrefix() throws PersistenceLayerException
+ {
+ assertFalse(getToken().parse(primaryContext, primaryProf,
+ getSubTokenString() + "|String"));
+ }
+
+ @Test
+ public void testInvalidInputClassEmpty() throws PersistenceLayerException
+ {
+ assertFalse(getToken().parse(primaryContext, primaryProf,
+ getSubTokenString() + "|CLASS="));
+ assertTrue(primaryGraph.isEmpty());
+ }
+
+ @Test
+ public void testRoundRobinTestClassEquals()
+ throws PersistenceLayerException
+ {
+ runRoundRobin(getSubTokenString() + "|CLASS=Wizard");
+ assertTrue(primaryContext.ref.validate());
+ assertTrue(secondaryContext.ref.validate());
+ }
+
+ @Test
+ public void testInvalidInputDomainEmpty() throws PersistenceLayerException
+ {
+ assertFalse(getToken().parse(primaryContext, primaryProf,
+ getSubTokenString() + "|DOMAIN="));
+ assertTrue(primaryGraph.isEmpty());
+ }
+
+ @Test
+ public void testRoundRobinTestDomainEquals()
+ throws PersistenceLayerException
+ {
+ runRoundRobin(getSubTokenString() + "|DOMAIN=Fire");
+ assertTrue(primaryContext.ref.validate());
+ assertTrue(secondaryContext.ref.validate());
+ }
+
+ // TODO is any separator legal, and if so, how does it work?
+}
Added: branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/StatTokenTest.java
===================================================================
--- branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/StatTokenTest.java (rev 0)
+++ branches/cdom/code/src/utest/plugin/lsttokens/oldchoose/StatTokenTest.java 2007-09-30 21:28:38 UTC (rev 4200)
@@ -0,0 +1,92 @@
+package plugin.lsttokens.oldchoose;
+
+import org.junit.Test;
+
+import pcgen.core.PCStat;
+import pcgen.core.PCTemplate;
+import pcgen.persistence.PersistenceLayerException;
+import pcgen.persistence.lst.ChooseLstToken;
+import pcgen.persistence.lst.LstObjectFileLoader;
+import pcgen.persistence.lst.PCTemplateLoader;
+import plugin.lsttokens.choose.StatToken;
+
+public class StatTokenTest extends AbstractChooseTokenTestCase
+{
+
+ static PCTemplateLoader loader = new PCTemplateLoader();
+
+ static StatToken subToken = new StatToken();
+
+ @Override
+ protected ChooseLstToken getSubToken()
+ {
+ return subToken;
+ }
+
+ @Override
+ public LstObjectFileLoader<PCTemplate> getLoader()
+ {
+ return loader;
+ }
+
+ @Override
+ protected Class<PCStat> getSubTokenType()
+ {
+ return PCStat.class;
+ }
+
+ @Override
+ public Class<PCTemplate> getCDOMClass()
+ {
+ return PCTemplate.class;
+ }
+
+ @Override
+ protected boolean isAnyLegal()
+ {
+ return false;
+ }
+
+ @Override
+ protected boolean isTypeLegal()
+ {
+ return false;
+ }
+
+ @Override
+ protected char getJoinCharacter()
+ {
+ return '|';
+ }
+
+ @Override
+ protected boolean isPrimitiveLegal()
+ {
+ return true;
+ }
+
+ @Override
+ protected boolean requiresConstruction()
+ {
+ return true;
+ }
+
+ @Test
+ public void testInvalidDoubleStat() throws PersistenceLayerException
+ {
+ construct(primaryContext, "TestWP1");
+ assertFalse(getToken().parse(primaryCon...
[truncated message content] |
|
From: <th...@us...> - 2007-09-30 21:27:05
|
Revision: 4199
http://pcgen.svn.sourceforge.net/pcgen/?rev=4199&view=rev
Author: thpr
Date: 2007-09-30 14:27:09 -0700 (Sun, 30 Sep 2007)
Log Message:
-----------
Commit a hack at runtime load testing framework
Added Paths:
-----------
branches/cdom/code/src/itest/pcgen/
branches/cdom/code/src/itest/pcgen/tokenruntimeload/
branches/cdom/code/src/itest/pcgen/tokenruntimeload/AbstractIntegrationTestCase.java
branches/cdom/code/src/itest/pcgen/tokenruntimeload/TemplateTest.java
branches/cdom/code/src/itest/pcgen/tokenruntimeload/WeaponProfTest.java
Added: branches/cdom/code/src/itest/pcgen/tokenruntimeload/AbstractIntegrationTestCase.java
===================================================================
--- branches/cdom/code/src/itest/pcgen/tokenruntimeload/AbstractIntegrationTestCase.java (rev 0)
+++ branches/cdom/code/src/itest/pcgen/tokenruntimeload/AbstractIntegrationTestCase.java 2007-09-30 21:27:09 UTC (rev 4199)
@@ -0,0 +1,103 @@
+/*
+ * Copyright (c) 2007 Tom Parker <th...@us...>
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+package pcgen.tokenruntimeload;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import junit.framework.TestCase;
+
+import org.junit.Before;
+import org.junit.BeforeClass;
+
+import pcgen.cdom.graph.PCGenGraph;
+import pcgen.core.Campaign;
+import pcgen.core.PObject;
+import pcgen.persistence.EditorLoadContext;
+import pcgen.persistence.LoadContext;
+import pcgen.persistence.PersistenceLayerException;
+import pcgen.persistence.lst.CampaignSourceEntry;
+import pcgen.persistence.lst.LstLoader;
+import pcgen.persistence.lst.LstToken;
+import pcgen.persistence.lst.TokenStore;
+
+public abstract class AbstractIntegrationTestCase<T extends PObject> extends
+ TestCase
+{
+ protected PCGenGraph primaryGraph;
+ protected PCGenGraph secondaryGraph;
+ protected LoadContext primaryContext;
+ protected LoadContext secondaryContext;
+ protected T primaryProf;
+ protected T secondaryProf;
+ protected String prefix = "";
+ protected int expectedPrimaryMessageCount = 0;
+
+ private static boolean classSetUpFired = false;
+ protected static CampaignSourceEntry testCampaign;
+ protected static CampaignSourceEntry modCampaign;
+
+ public abstract LstLoader<T> getLoader();
+
+ @BeforeClass
+ public static final void classSetUp() throws URISyntaxException
+ {
+ testCampaign =
+ new CampaignSourceEntry(new Campaign(), new URI(
+ "file:/Test%20Case"));
+ modCampaign =
+ new CampaignSourceEntry(new Campaign(), new URI(
+ "file:/Test%20Case%20Modifier"));
+ classSetUpFired = true;
+ }
+
+ @Override
+ @Before
+ public void setUp() throws PersistenceLayerException, URISyntaxException
+ {
+ if (!classSetUpFired)
+ {
+ classSetUp();
+ }
+ primaryGraph = new PCGenGraph();
+ secondaryGraph = new PCGenGraph();
+ primaryContext = new EditorLoadContext();
+ secondaryContext = new EditorLoadContext();
+ primaryProf =
+ primaryContext.ref.constructCDOMObject(getCDOMClass(),
+ "TestObj");
+ secondaryProf =
+ secondaryContext.ref.constructCDOMObject(getCDOMClass(),
+ "TestObj");
+ }
+
+ public abstract Class<? extends T> getCDOMClass();
+
+ public static void addToken(LstToken tok)
+ {
+ TokenStore.inst().addToTokenMap(tok);
+ }
+
+ protected void verifyClean()
+ {
+ // Ensure the graphs are the same at the start
+ assertEquals(primaryGraph, secondaryGraph);
+ // Ensure the graphs are the same at the start
+ assertTrue(primaryProf.isCDOMEqual(secondaryProf));
+ }
+}
Added: branches/cdom/code/src/itest/pcgen/tokenruntimeload/TemplateTest.java
===================================================================
--- branches/cdom/code/src/itest/pcgen/tokenruntimeload/TemplateTest.java (rev 0)
+++ branches/cdom/code/src/itest/pcgen/tokenruntimeload/TemplateTest.java 2007-09-30 21:27:09 UTC (rev 4199)
@@ -0,0 +1,129 @@
+package pcgen.tokenruntimeload;
+
+import java.net.URISyntaxException;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import pcgen.cdom.enumeration.AbilityCategory;
+import pcgen.cdom.enumeration.AbilityNature;
+import pcgen.cdom.enumeration.AssociationKey;
+import pcgen.cdom.enumeration.IntegerKey;
+import pcgen.cdom.enumeration.ObjectKey;
+import pcgen.cdom.enumeration.SubRegion;
+import pcgen.cdom.graph.PCGraphGrantsEdge;
+import pcgen.core.Ability;
+import pcgen.core.PCTemplate;
+import pcgen.persistence.PersistenceLayerException;
+import pcgen.persistence.lst.LstObjectFileLoader;
+import pcgen.persistence.lst.PCTemplateLoader;
+import pcgen.util.enumeration.Visibility;
+import plugin.lsttokens.pcclass.LevelsperfeatToken;
+import plugin.lsttokens.template.AddLevelToken;
+import plugin.lsttokens.template.BonusfeatsToken;
+import plugin.lsttokens.template.BonusskillpointsToken;
+import plugin.lsttokens.template.CrToken;
+import plugin.lsttokens.template.FaceToken;
+import plugin.lsttokens.template.FavoredclassToken;
+import plugin.lsttokens.template.FeatToken;
+import plugin.lsttokens.template.GenderlockToken;
+import plugin.lsttokens.template.HandsToken;
+import plugin.lsttokens.template.HdToken;
+import plugin.lsttokens.template.HitdieToken;
+import plugin.lsttokens.template.LangbonusToken;
+import plugin.lsttokens.template.LegsToken;
+import plugin.lsttokens.template.LevelToken;
+import plugin.lsttokens.template.LeveladjustmentToken;
+import plugin.lsttokens.template.NonppToken;
+import plugin.lsttokens.template.RacesubtypeToken;
+import plugin.lsttokens.template.RacetypeToken;
+import plugin.lsttokens.template.ReachToken;
+import plugin.lsttokens.template.RegionToken;
+import plugin.lsttokens.template.RemovableToken;
+import plugin.lsttokens.template.RepeatlevelToken;
+import plugin.lsttokens.template.SizeToken;
+import plugin.lsttokens.template.SubraceToken;
+import plugin.lsttokens.template.SubregionToken;
+import plugin.lsttokens.template.VisibleToken;
+import plugin.lsttokens.template.WeaponbonusToken;
+import plugin.lsttokens.testsupport.TokenRegistration;
+
+public class TemplateTest extends AbstractIntegrationTestCase<PCTemplate>
+{
+
+ static PCTemplateLoader loader = new PCTemplateLoader();
+
+ @Override
+ @Before
+ public final void setUp() throws PersistenceLayerException,
+ URISyntaxException
+ {
+ super.setUp();
+ TokenRegistration.register(new AddLevelToken());
+ TokenRegistration.register(new BonusfeatsToken());
+ TokenRegistration.register(new BonusskillpointsToken());
+ TokenRegistration.register(new CrToken());
+ TokenRegistration.register(new FaceToken());
+ TokenRegistration.register(new FavoredclassToken());
+ TokenRegistration.register(new FeatToken());
+ TokenRegistration.register(new GenderlockToken());
+ TokenRegistration.register(new HandsToken());
+ TokenRegistration.register(new HdToken());
+ TokenRegistration.register(new HitdieToken());
+ TokenRegistration.register(new LangbonusToken());
+ TokenRegistration.register(new LegsToken());
+ TokenRegistration.register(new LeveladjustmentToken());
+ TokenRegistration.register(new LevelsperfeatToken());
+ TokenRegistration.register(new LevelToken());
+ TokenRegistration.register(new NonppToken());
+ TokenRegistration.register(new RacesubtypeToken());
+ TokenRegistration.register(new RacetypeToken());
+ TokenRegistration.register(new ReachToken());
+ TokenRegistration.register(new RegionToken());
+ TokenRegistration.register(new RemovableToken());
+ TokenRegistration.register(new RepeatlevelToken());
+ TokenRegistration.register(new SizeToken());
+ TokenRegistration.register(new SubraceToken());
+ TokenRegistration.register(new SubregionToken());
+ TokenRegistration.register(new VisibleToken());
+ TokenRegistration.register(new WeaponbonusToken());
+ }
+
+ @Override
+ public Class<PCTemplate> getCDOMClass()
+ {
+ return PCTemplate.class;
+ }
+
+ @Override
+ public LstObjectFileLoader<PCTemplate> getLoader()
+ {
+ return loader;
+ }
+
+ @Test
+ public void testImportBasicTemplate() throws PersistenceLayerException
+ {
+ verifyClean();
+ primaryProf =
+ loader.parseFullLine(primaryContext, 1,
+ "TestTemplate\tHANDS:2\t"
+ + "SUBREGION:New South Wales\tVISIBLE:NO\tFEAT:Feat1",
+ testCampaign);
+ secondaryProf.put(IntegerKey.HANDS, Integer.valueOf(2));
+ secondaryProf.put(ObjectKey.SUBREGION, SubRegion
+ .valueOf("New South Wales"));
+ secondaryProf.put(ObjectKey.VISIBILITY, Visibility.NO);
+ secondaryProf.put(ObjectKey.SOURCE_URI, testCampaign.getURI());
+ secondaryProf.setName("TestTemplate");
+ PCGraphGrantsEdge edge =
+ new PCGraphGrantsEdge(secondaryProf, secondaryContext.ref
+ .getCDOMReference(Ability.class, AbilityCategory.FEAT,
+ "Feat1"), "FEAT");
+ edge
+ .setAssociation(AssociationKey.ABILITY_NATURE, AbilityNature.NORMAL);
+ edge.setAssociation(AssociationKey.SOURCE_URI, null);
+ secondaryGraph.addEdge(edge);
+ verifyClean();
+ }
+}
Added: branches/cdom/code/src/itest/pcgen/tokenruntimeload/WeaponProfTest.java
===================================================================
--- branches/cdom/code/src/itest/pcgen/tokenruntimeload/WeaponProfTest.java (rev 0)
+++ branches/cdom/code/src/itest/pcgen/tokenruntimeload/WeaponProfTest.java 2007-09-30 21:27:09 UTC (rev 4199)
@@ -0,0 +1,55 @@
+package pcgen.tokenruntimeload;
+
+import java.net.URISyntaxException;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import pcgen.cdom.enumeration.IntegerKey;
+import pcgen.cdom.enumeration.ObjectKey;
+import pcgen.core.WeaponProf;
+import pcgen.persistence.PersistenceLayerException;
+import pcgen.persistence.lst.LstObjectFileLoader;
+import pcgen.persistence.lst.WeaponProfLoader;
+import plugin.lsttokens.testsupport.TokenRegistration;
+import plugin.lsttokens.weaponprof.HandsToken;
+
+public class WeaponProfTest extends AbstractIntegrationTestCase<WeaponProf>
+{
+
+ static HandsToken token = new HandsToken();
+ static WeaponProfLoader loader = new WeaponProfLoader();
+
+ @Override
+ @Before
+ public final void setUp() throws PersistenceLayerException,
+ URISyntaxException
+ {
+ super.setUp();
+ TokenRegistration.register(token);
+ }
+
+ @Override
+ public Class<WeaponProf> getCDOMClass()
+ {
+ return WeaponProf.class;
+ }
+
+ @Override
+ public LstObjectFileLoader<WeaponProf> getLoader()
+ {
+ return loader;
+ }
+
+ @Test
+ public void testImportBasicWeaponProf() throws PersistenceLayerException
+ {
+ verifyClean();
+ primaryProf =
+ loader.parseFullLine(primaryContext, 1, "TestWP1\tHANDS:2",
+ testCampaign);
+ secondaryProf.put(IntegerKey.HANDS, Integer.valueOf(2));
+ secondaryProf.put(ObjectKey.SOURCE_URI, testCampaign.getURI());
+ verifyClean();
+ }
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <th...@us...> - 2007-09-30 21:26:22
|
Revision: 4198
http://pcgen.svn.sourceforge.net/pcgen/?rev=4198&view=rev
Author: thpr
Date: 2007-09-30 14:26:25 -0700 (Sun, 30 Sep 2007)
Log Message:
-----------
Commit unit test compilation
Added Paths:
-----------
branches/cdom/code/src/utest/plugin/pretokens/test/PreTestTestSuite.java
Added: branches/cdom/code/src/utest/plugin/pretokens/test/PreTestTestSuite.java
===================================================================
--- branches/cdom/code/src/utest/plugin/pretokens/test/PreTestTestSuite.java (rev 0)
+++ branches/cdom/code/src/utest/plugin/pretokens/test/PreTestTestSuite.java 2007-09-30 21:26:25 UTC (rev 4198)
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2007 Tom Parker <th...@us...>
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+package plugin.pretokens.test;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+import junit.framework.TestSuite;
+
+@RunWith(Suite.class)
+@Suite.SuiteClasses({PreAbilityTesterTest.class, PreAlignTesterTest.class,
+ PreBirthPlaceTesterTest.class, PreCityTesterTest.class,
+ PreCSkillTesterTest.class, PreDamageReductionTesterTest.class,
+ PreDeityAlignTesterTest.class, PreDeityDomainTesterTest.class,
+ PreDeityTesterTest.class, PreDomainTesterTest.class,
+ PreEquipBothTesterTest.class, PreEquipPrimaryTesterTest.class,
+ PreEquipSecondaryTesterTest.class, PreEquipTesterTest.class,
+ PreEquipTwoWeaponTesterTest.class, PreFeatTesterTest.class,
+ PreGenderTesterTest.class, PreHandsTesterTest.class,
+ PreHasDeityTesterTest.class, PreLanguageTesterTest.class,
+ PreLegsTesterTest.class, PreRaceTesterTest.class, PreReachTesterTest.class,
+ PreRegionTesterTest.class, PreShieldProfTesterTest.class,
+ PreSizeTesterTest.class, PreSkillMultTesterTest.class,
+ PreSkillTesterTest.class, PreSkillTotTesterTest.class,
+ PreSpecialAbilityTesterTest.class, PreSpellBookTesterTest.class,
+ PreSpellCastMemorizeTesterTest.class, PreSpellCastTesterTest.class,
+ PreSpellDescriptorTesterTest.class, PreSpellResistanceTesterTest.class,
+ PreSpellSchoolTesterTest.class, PreSpellSubSchoolTesterTest.class,
+ PreSpellTesterTest.class, PreStatTesterTest.class,
+ PreSubClassTesterTest.class, PreTemplateTesterTest.class,
+ PreTextTesterTest.class, PreTypeTesterTest.class,
+ PreVisionTesterTest.class, PreWeaponProfTesterTest.class,
+ PreWieldTesterTest.class,})
+public class PreTestTestSuite extends TestSuite
+{
+ // No content, see annotations
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <th...@us...> - 2007-09-30 21:17:36
|
Revision: 4197
http://pcgen.svn.sourceforge.net/pcgen/?rev=4197&view=rev
Author: thpr
Date: 2007-09-30 14:17:39 -0700 (Sun, 30 Sep 2007)
Log Message:
-----------
Some planning items for EqMod Choose
Modified Paths:
--------------
branches/cdom/code/src/java/pcgen/core/EquipmentModifier.java
Modified: branches/cdom/code/src/java/pcgen/core/EquipmentModifier.java
===================================================================
--- branches/cdom/code/src/java/pcgen/core/EquipmentModifier.java 2007-09-30 20:56:23 UTC (rev 4196)
+++ branches/cdom/code/src/java/pcgen/core/EquipmentModifier.java 2007-09-30 21:17:39 UTC (rev 4197)
@@ -33,7 +33,9 @@
import java.util.Set;
import java.util.StringTokenizer;
+import pcgen.cdom.content.ChooseActionContainer;
import pcgen.cdom.enumeration.IntegerKey;
+import pcgen.cdom.helper.ChoiceSet;
import pcgen.core.bonus.Bonus;
import pcgen.core.bonus.BonusObj;
import pcgen.core.prereq.Prerequisite;
@@ -1656,4 +1658,67 @@
return getKeyName().compareTo(o.toString());
}
+
+ private EqModChooseActionContainer chooseContainer = null;
+
+ @Override
+ public boolean hasChooseContainer()
+ {
+ return chooseContainer == null;
+ }
+
+ @Override
+ public EqModChooseActionContainer getChooseContainer()
+ {
+ if (chooseContainer == null)
+ {
+ chooseContainer = new EqModChooseActionContainer("CHOOSE");
+ }
+ return chooseContainer;
+ }
+
+ public class EqModChooseActionContainer extends ChooseActionContainer
+ {
+
+ private ChoiceSet<?> secondChoiceSet;
+
+ public EqModChooseActionContainer(String nm)
+ {
+ super(nm);
+ }
+
+ public ChoiceSet<?> getSecondChoiceSet()
+ {
+ return secondChoiceSet;
+ }
+
+ public void setSecondChoiceSet(ChoiceSet<?> secondChoiceSet)
+ {
+ this.secondChoiceSet = secondChoiceSet;
+ }
+
+ @Override
+ public boolean equals(Object o)
+ {
+ if (o instanceof EqModChooseActionContainer && super.equals(o))
+ {
+ EqModChooseActionContainer other = (EqModChooseActionContainer) o;
+ if (secondChoiceSet == null)
+ {
+ if (other.secondChoiceSet != null)
+ {
+ return false;
+ }
+ }
+ else if (!secondChoiceSet.equals(other.secondChoiceSet))
+ {
+ return false;
+ }
+ return true;
+ }
+ return false;
+ }
+
+
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <th...@us...> - 2007-09-30 20:56:19
|
Revision: 4196
http://pcgen.svn.sourceforge.net/pcgen/?rev=4196&view=rev
Author: thpr
Date: 2007-09-30 13:56:23 -0700 (Sun, 30 Sep 2007)
Log Message:
-----------
Fix weird merge error
Modified Paths:
--------------
branches/cdom/code/pluginbuild.xml
Modified: branches/cdom/code/pluginbuild.xml
===================================================================
--- branches/cdom/code/pluginbuild.xml 2007-09-30 19:28:36 UTC (rev 4195)
+++ branches/cdom/code/pluginbuild.xml 2007-09-30 20:56:23 UTC (rev 4196)
@@ -6748,13 +6748,6 @@
</patternset>
</fileset>
</jar>
- <jar jarfile="${lstplugins.dir}/ClassLstToken-FEATAUTO.jar" manifest="${src.java.dir}/plugin/lsttokens/manifest.mf">
- <fileset dir="${build.classes.dir}">
- <patternset>
- <include name="plugin/lsttokens/deprecated/FeatautoToken.class" />
- </patternset>
- </fileset>
- </jar>
</target>
<target name="jar-deprecated-plugin" depends="manifest" description="Build (Link) plugin jar files">
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ama...@us...> - 2007-09-30 19:28:32
|
Revision: 4195
http://pcgen.svn.sourceforge.net/pcgen/?rev=4195&view=rev
Author: amaitland
Date: 2007-09-30 12:28:36 -0700 (Sun, 30 Sep 2007)
Log Message:
-----------
Removing file - moving to new implementation guide
Removed Paths:
-------------
Trunk/pcgen/docs/listfilepages/lstfileclass/lfc_lesson17_addingabilitiesviaskillpoints.html
Deleted: Trunk/pcgen/docs/listfilepages/lstfileclass/lfc_lesson17_addingabilitiesviaskillpoints.html
===================================================================
--- Trunk/pcgen/docs/listfilepages/lstfileclass/lfc_lesson17_addingabilitiesviaskillpoints.html 2007-09-30 19:21:55 UTC (rev 4194)
+++ Trunk/pcgen/docs/listfilepages/lstfileclass/lfc_lesson17_addingabilitiesviaskillpoints.html 2007-09-30 19:28:36 UTC (rev 4195)
@@ -1,104 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-
-
- <title>LST File Class</title>
-
-
- <link rel="stylesheet" type="text/css" href="../../pcgen.css">
-
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
- <style type="text/css">
-<!--
-.style1 {font-family: "Courier New", Courier, mono}
--->
- </style>
-</head>
-
-
- <body>
-
-<h1>Lesson #17: .lst - Skills buying abilities</h1>
-
-<p>By Andrew A. Maitland (LegacyKing) and Chris Chandler (Barak) for providing the basis for the text. </p>
-
-<p class="indent0"><strong>File(s) Covered:</strong>
- *_abilities.lst, *_skills.lst, miscinfo.lst, statsandchecks.lst</p>
-
-<p class="indent0"><strong>Tags used:</strong></p>
-
-<p class="indent1"> <code><a href="../systemfilestagpages/gamemodemiscinfolist.html#ABILITYCATEGORY">ABILITYCATEGORY</a>, <a href="../systemfilestagpages/globalfilesability#CATEGORY2">CATEGORY,</a> <a href="../systemfilestagpages/gamemodemiscinfolist.html#PLURAL">PLURAL</a>,
-<a href="../systemfilestagpages/gamemodemiscinfolist.html#EDITABLE">EDITABLE</a>,
-<a href="../systemfilestagpages/gamemodemiscinfolist.html#EDITPOOL">EDITPOOL</a>,
-<a href="../systemfilestagpages/gamemodemiscinfolist.html#FRACTIONALPOOL">FRACTIONALPOOL</a>,
-<a href="../systemfilestagpages/gamemodemiscinfolist.html#POOL">POOL</a>,
-<a href="../systemfilestagpages/globalfilesability.html#VISIBLE">VISIBLE,</a><br>
-<a href="../systemfilestagpages/globalfilesdefine.html">DEFINE</a>,
-<a href="../systemfilestagpages/gamemodemiscinfolist.html#TYPE">TYPE</a>, <a href="../globalfilestagpages/globalfilesprexxx.html">PREABILITY,
-PRESKILL,
-PREVARLT,</a> <a href="../globalfilesother.html#DESC">DESC</a>,
-<a href="../globalfilesbonus.html#VAR">BONUS:VAR</a></code></p>
-
-<p></p>
-
-<hr>
-<p>This is a lesson to assist users in setting up things such as buying abilities via Skill Ranks or known as Skill Tricks. Each section represents a different file and what tags you'll need. Provided with the included tags is a sample in each section. So if you copy these examples verbatim you'll have a good start. Above is referenced the actual tags for the full capabilities. The TOP header <strong>bolded</strong> text is the file where these tags need to be placed. Each new line should be considered a TAB in the actual file.</p>
-<p>So,</p>
-<p> ABILITYCATEGORY:ST<br>
- CATEGORY:ST</p>
-<p>Becomes:</p>
-<p>ABILITYCATEGORY:ST <tab> CATEGORY:ST</p>
-<hr>
-<p><strong>Miscinfo.lst file:</strong> (Found in the gamemode folder) </p>
-<p class="indent1 style1">ABILITYCATEGORY:ST <br>
- CATEGORY:ST <br>
- PLURAL:STs <br>
- EDITABLE:YES <br>
- EDITPOOL:NO <br>
- FRACTIONALPOOL:NO <br>
- POOL:STPool <br>
- VISIBLE:YES </p>
-<p></p>
-
-<hr>
-<p><strong>Statsandchecks.lst file</strong>: (Found in the gamemode folder) </p>
-<p>(added to the line defining intelligence stat): </p>
-<p class="indent1 style1">DEFINE:STMax|TL/2 </p>
-<p class="indent1 style1"> </p>
-<hr>
-<p><strong>Skills.lst file:</strong> </p>
-<p class="indent1 style1"> ST Skill <br>
- TYPE:NoStat <br>
- VISIBLE:Display <br>
- BONUS:ABILITYPOOL|ST|SKILL.ST Skill.RANK </p>
-<p class="style1"></p>
-<hr>
-<p><strong>Ability.lst file</strong>: (showing one ST specifically, adjust PRExxx to be appropriate...) </p>
-
-<p>Note the “!PREABILITY:1,CATEGORY=ST,Ac Ba”... this keeps the ability from showing up for choosing after you have already taken it. This is a temporary workaround as there is currently a bug with the ability object not respecting the default of MULT:NO): </p>
-<p class="indent1 style1">Ac Ba <br>
- CATEGORY:ST <br>
- TYPE:ST.Movement <br>
- VISIBLE:YES <br>
- !PREABILITY:1,CATEGORY=ST,Ac Ba <br>
- PRESKILL:1,Tumble=12 <br>
- PREVARLT:STCount,STMax <br>
- DEFINE:STCount|0 <br>
- DESC:<appropriate description> <br>
- BONUS:VAR|STCount|1 </p>
-<hr>
-<p>Using this, you merely dump skill points into the ST Skill and then flip to the feats tab and the STs sub-tab and choose the ones you want. Hope that helps. </p>
-<p>Remember, miscinfo.lst and statsandchecks.lst are gamemode files. They do not get referenced in the .pcc file directly. There are entries about them in the docs if you want to read up on them. Anyway, to make a long story somewhat shorter, what you want to do is go to the “pcgen/system/gamemodes/35e” directory, open the miscinfo.lst file there and add the information I gave you in the post (right below the Salient Divine Abilities entry would work :p). Then open up the statasandchecks.lst file and add the VAR definition as I described before. To call the ability file it's (as you guessed) “ABILITY:ability.lst” in the .pcc file. Basically pretend that an ability.lst is a feat file as far as what tags you can use in it and you'll be ok (fair warning though, there may be exceptions to that rule of thumb). </p>
-<p></p>
-
-<hr>
-<p>Andrew</p>
-<p>
- <a href="http://validator.w3.org/check?uri=referer"><img
- src="../../images/system/valid-html401.png"
- alt="Valid HTML 4.01 Strict" height="31" width="88"></a>
- </p>
-
-</body>
-</html>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ama...@us...> - 2007-09-30 19:21:53
|
Revision: 4194
http://pcgen.svn.sourceforge.net/pcgen/?rev=4194&view=rev
Author: amaitland
Date: 2007-09-30 12:21:55 -0700 (Sun, 30 Sep 2007)
Log Message:
-----------
[ 1804566 ] [RSRD] Basics refers to Epic
Moved EPIC stuff into a .MOD in the epic feats
Modified Paths:
--------------
Trunk/pcgen/data/d20ogl/srd35/basics/rsrd_feats_hidden2.lst
Trunk/pcgen/data/d20ogl/srd35/epic/rsrd_feats_epic.lst
Modified: Trunk/pcgen/data/d20ogl/srd35/basics/rsrd_feats_hidden2.lst
===================================================================
--- Trunk/pcgen/data/d20ogl/srd35/basics/rsrd_feats_hidden2.lst 2007-09-30 19:20:29 UTC (rev 4193)
+++ Trunk/pcgen/data/d20ogl/srd35/basics/rsrd_feats_hidden2.lst 2007-09-30 19:21:55 UTC (rev 4194)
@@ -141,7 +141,7 @@
###Block: Shadowdancer special abilities
# Feat Name Type Visible Special Ability Define Innate Spells Source Page
Shadow Illusion TYPE:ClassAbility.SpellLike VISIBLE:NO SA:Shadow Illusion (Sp) DEFINE:ShadowIllusionLVL|0 SPELLS:Shadowdancer|TIMES=1|CASTERLEVEL=ShadowIllusionLVL|Silent Image,11+CHA SOURCEPAGE:PrestigeClasses.rtf
-Shadow Jump TYPE:ClassAbility.Supernatural VISIBLE:NO SA:Shadow Jump (Su) % ft|ShadowJump|PREVAREQ:ShadowJumpProgression,0 SA:Shadow Jump (Su) % ft|EpicShadowJump|PREVAREQ:ShadowJumpProgression,1 SA:Shadow Jump (Su) % mi|EpicShadowJump/5280|PREVAREQ:ShadowJumpProgression,2 SA:Shadow Jump (Su) % AU|EpicShadowJump/5280/92955778.5|PREVAREQ:ShadowJumpProgression,3 DEFINE:ShadowJump|0 DEFINE:EpicShadowJump|0 DEFINE:ShadowJumpProgression|0 SOURCEPAGE:PrestigeClasses.rtf
+Shadow Jump TYPE:ClassAbility.Supernatural VISIBLE:NO SA:Shadow Jump (Su) % ft|ShadowJump|PREVAREQ:ShadowJumpProgression,0 DEFINE:ShadowJump|0 DEFINE:ShadowJumpProgression|0 SOURCEPAGE:PrestigeClasses.rtf
###Block: Thaumaturgist special abilities
# Feat Name Type Visible Special Ability Source Page
Modified: Trunk/pcgen/data/d20ogl/srd35/epic/rsrd_feats_epic.lst
===================================================================
--- Trunk/pcgen/data/d20ogl/srd35/epic/rsrd_feats_epic.lst 2007-09-30 19:20:29 UTC (rev 4193)
+++ Trunk/pcgen/data/d20ogl/srd35/epic/rsrd_feats_epic.lst 2007-09-30 19:21:55 UTC (rev 4194)
@@ -201,6 +201,8 @@
Improved Multiattack TYPE:General PREFEAT:1,Multiattack PREHANDSGTEQ:3 DESC:Your secondary attacks with natural weapons have no penalty. SOURCEPAGE:EpicFeats.rtf
Improved Multiweapon Fighting TYPE:General PREATT:9 PREFEAT:1,Multiweapon Fighting PREHANDSGTEQ:3 PRESTAT:1,DEX=15 DESC:In addition to the single extra attack you get with each extra weapon from Multiweapon Fighting, you get a second attack with each extra weapon, albeit at a -5 penalty. SOURCEPAGE:EpicFeats.rtf
+###BLOCK: Mod Shadow Jump:
+Shadow Jump.MOD SA:Shadow Jump (Su) % ft|EpicShadowJump|PREVAREQ:ShadowJumpProgression,1 SA:Shadow Jump (Su) % mi|EpicShadowJump/5280|PREVAREQ:ShadowJumpProgression,2 SA:Shadow Jump (Su) % AU|EpicShadowJump/5280/92955778.5|PREVAREQ:ShadowJumpProgression,3 DEFINE:EpicShadowJump|0
#
# End
#
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tir...@us...> - 2007-09-30 19:20:25
|
Revision: 4193
http://pcgen.svn.sourceforge.net/pcgen/?rev=4193&view=rev
Author: tir-gwaith
Date: 2007-09-30 12:20:29 -0700 (Sun, 30 Sep 2007)
Log Message:
-----------
[ 1805246 ] [R/SRD] Fighter Feat Pool using ABILITYPOOL
Modified Paths:
--------------
Trunk/pcgen/data/d20ogl/srd35/basics/rsrd_classes_base.lst
Modified: Trunk/pcgen/data/d20ogl/srd35/basics/rsrd_classes_base.lst
===================================================================
--- Trunk/pcgen/data/d20ogl/srd35/basics/rsrd_classes_base.lst 2007-09-30 19:14:30 UTC (rev 4192)
+++ Trunk/pcgen/data/d20ogl/srd35/basics/rsrd_classes_base.lst 2007-09-30 19:20:29 UTC (rev 4193)
@@ -217,17 +217,18 @@
1 AUTO:FEAT|Greater Weapon Focus Qualify
1 AUTO:FEAT|Greater Weapon Specialization Qualify
###Block: Level progression
-1 ADD:FEAT|TYPE.Fighter
-2 ADD:FEAT|TYPE.Fighter
-4 ADD:FEAT|TYPE.Fighter
-6 ADD:FEAT|TYPE.Fighter
-8 ADD:FEAT|TYPE.Fighter
-10 ADD:FEAT|TYPE.Fighter
-12 ADD:FEAT|TYPE.Fighter
-14 ADD:FEAT|TYPE.Fighter
-16 ADD:FEAT|TYPE.Fighter
-18 ADD:FEAT|TYPE.Fighter
-20 ADD:FEAT|TYPE.Fighter
+1 BONUS:ABILITYPOOL|Fighter Feat|CL/2+1
+#1 ADD:FEAT|TYPE.Fighter
+#2 ADD:FEAT|TYPE.Fighter
+#4 ADD:FEAT|TYPE.Fighter
+#6 ADD:FEAT|TYPE.Fighter
+#8 ADD:FEAT|TYPE.Fighter
+#10 ADD:FEAT|TYPE.Fighter
+#12 ADD:FEAT|TYPE.Fighter
+#14 ADD:FEAT|TYPE.Fighter
+#16 ADD:FEAT|TYPE.Fighter
+#18 ADD:FEAT|TYPE.Fighter
+#20 ADD:FEAT|TYPE.Fighter
# UDAM numbers extrapolated from Equipmet.rtf,
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ama...@us...> - 2007-09-30 19:14:28
|
Revision: 4192
http://pcgen.svn.sourceforge.net/pcgen/?rev=4192&view=rev
Author: amaitland
Date: 2007-09-30 12:14:30 -0700 (Sun, 30 Sep 2007)
Log Message:
-----------
Removed Deprecated Tags - MFEAT, HITDICE, PREDEFAULTMONSTER.
Prettylst run over the basic set
Modified Paths:
--------------
Trunk/pcgen/data/d20ogl/srd35/basics/rsrd_domains_divine.lst
Trunk/pcgen/data/d20ogl/srd35/basics/rsrd_feats_hidden.lst
Trunk/pcgen/data/d20ogl/srd35/basics/rsrd_kits_races__animals.lst
Trunk/pcgen/data/d20ogl/srd35/basics/rsrd_races__animals.lst
Trunk/pcgen/data/d20ogl/srd35/basics/rsrd_spells.lst
Trunk/pcgen/data/d20ogl/srd35/basics/rsrd_spells_monster.lst
Trunk/pcgen/data/d20ogl/srd35/basics/rsrd_templates_types.lst
Modified: Trunk/pcgen/data/d20ogl/srd35/basics/rsrd_domains_divine.lst
===================================================================
--- Trunk/pcgen/data/d20ogl/srd35/basics/rsrd_domains_divine.lst 2007-09-30 18:02:02 UTC (rev 4191)
+++ Trunk/pcgen/data/d20ogl/srd35/basics/rsrd_domains_divine.lst 2007-09-30 19:14:30 UTC (rev 4192)
@@ -1,4 +1,4 @@
-# CVS $Revision: 415 $ $Author: eddyanthony $ -- Fri Mar 2 05:43:01 2007 -- reformated by prettylst.pl v1.37 (build 2312)
+# CVS $Revision: 415 $ $Author: eddyanthony $ -- Sun Sep 30 12:06:30 2007 -- reformated by prettylst.pl v1.38 (build 2788)
SOURCELONG:Revised (v.3.5) System Reference Document SOURCESHORT:RSRD SOURCEWEB:http://www.wizards.com/default.asp?x=d20/article/srd35
###Block: Additional Domains from the Divine Characters section of the RSRD
@@ -10,9 +10,9 @@
Darkness FEAT:Blind Fight SOURCEPAGE:DivineDomainsandSpells.rtf DESC:Free Blind-Fight feat. SPELLLEVEL:DOMAIN|Darkness=1|Obscuring Mist|Darkness=2|Blindness/Deafness|Darkness=3|Blacklight|Darkness=4|Armor of Darkness|Darkness=5|Summon Monster V|Darkness=6|Prying Eyes|Darkness=7|Nightmare|Darkness=8|Power Word Blind|Darkness=9|Power Word Kill
Glory PREALIGN:LG,LN,NG,TN,CG,CN BONUS:VAR|TurnLevelUndead|2 BONUS:VAR|TurnDiceUndead|1 SOURCEPAGE:DivineDomainsandSpells.rtf DESC:Turn undead with a +2 bonus on the turning check and +1d6 to the turning damage roll. SPELLLEVEL:DOMAIN|Glory=1|Disrupt Undead|Glory=2|Bless Weapon|Glory=3|Searing Light|Glory=4|Holy Smite|Glory=5|Holy Sword|Glory=6|Bolt of Glory|Glory=7|Sunbeam|Glory=8|Crown of Glory|Glory=9|Gate
Liberation SOURCEPAGE:DivineDomainsandSpells.rtf DESC:+2 morale bonus on all saving throws against enchantment spells or effects. SPELLLEVEL:DOMAIN|Liberation=1|Remove Fear|Liberation=2|Remove Paralysis|Liberation=3|Remove Curse|Liberation=4|Freedom of Movement|Liberation=5|Break Enchantment|Liberation=6|Dispel Magic (Greater)|Liberation=7|Refuge|Liberation=8|Mind Blank|Liberation=9|Freedom
-Madness SA:Insanity score %|Insanity DEFINE:Insanity|0 BONUS:CHECKS|Will|-Insanity BONUS:DC|TYPE.Divine|Insanity BONUS:SKILL|TYPE.Wisdom|-Insanity BONUS:STAT|BASESPELLSTAT|Insanity BONUS:VAR|Insanity|(var("CL=Cleric")+var("BL=Cleric"))/2 SOURCEPAGE:DivineDomainsandSpells.rtf DESC:You gain an Insanity score equal to half your class level. For spellcasting (determining bonus spells and DCs), you use your Wisdom score plus your Insanity score in place of Wisdom alone. SPELLLEVEL:DOMAIN|Madness=1|Confusion (Lesser)|Madness=2|Touch of Madness|Madness=3|Rage|Madness=4|Confusion|Madness=5|Bolts of Bedevilment|Madness=6|Phantasmal Killer|Madness=7|Insanity|Madness=8|Maddening Scream|Madness=9|Weird
+Madness SA:Insanity score %|Insanity DEFINE:Insanity|0 BONUS:CHECKS|Will|-Insanity BONUS:DC|TYPE.Divine|Insanity BONUS:SKILL|TYPE.Wisdom|-Insanity BONUS:STAT|BASESPELLSTAT|Insanity BONUS:VAR|Insanity|(var("CL=Cleric")+var("BL=Cleric"))/2 SOURCEPAGE:DivineDomainsandSpells.rtf DESC:You gain an Insanity score equal to half your class level. For spellcasting (determining bonus spells and DCs), you use your Wisdom score plus your Insanity score in place of Wisdom alone. SPELLLEVEL:DOMAIN|Madness=1|Confusion (Lesser)|Madness=2|Touch of Madness|Madness=3|Rage|Madness=4|Confusion|Madness=5|Bolts of Bedevilment|Madness=6|Phantasmal Killer|Madness=7|Insanity|Madness=8|Maddening Scream|Madness=9|Weird
Nobility SOURCEPAGE:DivineDomainsandSpells.rtf DESC:You have the spell-like ability to inspire allies, giving them a +2 morale bonus on saving throws, attack rolls, ability checks, skill checks, and weapon damage rolls. Allies must be able to hear the character speak for 1 round. Using this ability is a standard action. It lasts a number of rounds equal to the character's Charisma bonus and can be used once per day. SPELLLEVEL:DOMAIN|Nobility=1|Divine Favor|Nobility=2|Enthrall|Nobility=3|Magic Vestment|Nobility=4|Discern Lies|Nobility=5|Command (Greater)|Nobility=6|Geas/Quest|Nobility=7|Repulsion|Nobility=8|Demand|Nobility=9|Storm of Vengeance
-Repose PREALIGN:LG,LN,NG,TN,CG,CN SA:Death Touch 1/day, spell-like ability, melee touch attack, %d6 points of damage. If the total at least equals creature's current hit points, it dies|DeathTouch DEFINE:DeathTouch|0 BONUS:VAR|DeathTouch|var("CL=Cleric") SOURCEPAGE:DivineDomainsandSpells.rtf DESC:You may use a death touch once per day. SPELLLEVEL:DOMAIN|Repose=1|Deathwatch|Repose=2|Gentle Repose|Repose=3|Speak with Dead|Repose=4|Death Ward|Repose=5|Slay Living|Repose=6|Undeath to Death|Repose=7|Destruction|Repose=8|Surelife|Repose=9|Wail of the Banshee
+Repose PREALIGN:LG,LN,NG,TN,CG,CN SA:Death Touch 1/day, spell-like ability, melee touch attack, %d6 points of damage. If the total at least equals creature's current hit points, it dies|DeathTouch DEFINE:DeathTouch|0 BONUS:VAR|DeathTouch|var("CL=Cleric") SOURCEPAGE:DivineDomainsandSpells.rtf DESC:You may use a death touch once per day. SPELLLEVEL:DOMAIN|Repose=1|Deathwatch|Repose=2|Gentle Repose|Repose=3|Speak with Dead|Repose=4|Death Ward|Repose=5|Slay Living|Repose=6|Undeath to Death|Repose=7|Destruction|Repose=8|Surelife|Repose=9|Wail of the Banshee
Rune VFEAT:Scribe Scroll SOURCEPAGE:DivineDomainsandSpells.rtf DESC:Free Scribe Scroll feat. SPELLLEVEL:DOMAIN|Rune=1|Erase|Rune=2|Secret Page|Rune=3|Glyph of Warding|Rune=4|Explosive Runes|Rune=5|Planar Binding (Lesser)|Rune=6|Glyph of Warding (Greater)|Rune=7|Instant Summons|Rune=8|Symbol of Death|Rune=9|Teleportation Circle
Scalykind VFEAT:Rebuke Scalykind|Basic Turning SOURCEPAGE:DivineDomainsandSpells.rtf DESC:Rebuke or command animals (reptilian creatures and snakes only) as an evil cleric rebukes or commands undead. SPELLLEVEL:DOMAIN|Scalykind=1|Magic Fang|Scalykind=2|Animal Trance|Scalykind=3|Magic Fang (Greater)|Scalykind=4|Poison|Scalykind=5|Animal Growth|Scalykind=6|Eyebite|Scalykind=7|Creeping Doom|Scalykind=8|Animal Shapes|Scalykind=9|Shapechange
Weather CSKILL:Survival SOURCEPAGE:DivineDomainsandSpells.rtf DESC:Survival is a class skill. SPELLLEVEL:DOMAIN|Weather=1|Obscuring Mist|Weather=2|Fog Cloud|Weather=3|Call Lightning|Weather=4|Sleet Storm|Weather=5|Ice Storm|Weather=6|Control Winds|Weather=7|Control Weather|Weather=8|Whirlwind|Weather=9|Storm of Vengeance
Modified: Trunk/pcgen/data/d20ogl/srd35/basics/rsrd_feats_hidden.lst
===================================================================
--- Trunk/pcgen/data/d20ogl/srd35/basics/rsrd_feats_hidden.lst 2007-09-30 18:02:02 UTC (rev 4191)
+++ Trunk/pcgen/data/d20ogl/srd35/basics/rsrd_feats_hidden.lst 2007-09-30 19:14:30 UTC (rev 4192)
@@ -1,4 +1,4 @@
-# CVS $Revision$ $Author$ -- Fri Aug 31 15:56:37 2007 -- reformated by prettylst.pl v1.38 (build 2788)
+# CVS $Revision$ $Author$ -- Sun Sep 30 12:06:30 2007 -- reformated by prettylst.pl v1.38 (build 2788)
SOURCELONG:Revised (v.3.5) System Reference Document SOURCESHORT:RSRD SOURCEWEB:http://www.wizards.com/default.asp?x=d20/article/srd35
# Original Entry by: Tir Gwaith, DLM, GldDragon35
@@ -377,9 +377,9 @@
Vermin Traits TYPE:Special VISIBLE:NO SA:Vermin Traits|!PRERULE:DISPLAYTYPETRAITS SA:Vermin eat/sleep/breathe|PRERULE:DISPLAYTYPETRAITS SA:Mindless - Immune to all mind-influencing effects (charms/ compulsions/ phantasms/ patterns/ and morale effects)|PRETEMPLATE:Mindless|PRERULE:DISPLAYTYPETRAITS VISION:Darkvision (60') SOURCEPAGE:TypesSubtypesAbilities.rtf
###Block: Special Abilities
-# Feat Name Output Name Type Visible Special Ability Multiple? Choose Combat bonus Weapon prof. bonus Source Page
+# Feat Name Output Name Type Visible Special Ability Multiple? Choose Combat bonus Weapon prof. bonus Source Page
Oversized Weapon OUTPUTNAME:Oversized Weapon (Ex) TYPE:Special.Extraordinary VISIBLE:NO SA:Oversized Weapon (Ex) MULT:YES CHOOSE:WEAPONPROFS|LIST BONUS:WEAPONPROF=%LIST|PCSIZE|1
-Powerful Build OUTPUTNAME:Powerful Build (Ex) TYPE:Special.Extraordinary VISIBLE:NO BONUS:WEAPONPROF=TYPE.Simple|PCSIZE|1 BONUS:WEAPONPROF=TYPE.Martial|PCSIZE|1 BONUS:WEAPONPROF=TYPE.Exotic|PCSIZE|1 BONUS:COMBAT|TOHIT.GRAPPLE|4|PRESIZELT:C SOURCEPAGE:PsionicMonsters.rtf
+Powerful Build OUTPUTNAME:Powerful Build (Ex) TYPE:Special.Extraordinary VISIBLE:NO BONUS:COMBAT|TOHIT.GRAPPLE|4|PRESIZELT:C BONUS:WEAPONPROF=TYPE.Simple|PCSIZE|1 BONUS:WEAPONPROF=TYPE.Martial|PCSIZE|1 BONUS:WEAPONPROF=TYPE.Exotic|PCSIZE|1 SOURCEPAGE:PsionicMonsters.rtf
Superior Two-Weapon Fighting OUTPUTNAME:Superior Two-Weapon Fighting (Ex) TYPE:Special.Extraordinary VISIBLE:NO SA:Superior Two-Weapon Fighting (Ex) BONUS:COMBAT|TOHIT-PRIMARY|6 BONUS:COMBAT|TOHIT-SECONDARY|10
###Block: Leadership feat support
Modified: Trunk/pcgen/data/d20ogl/srd35/basics/rsrd_kits_races__animals.lst
===================================================================
--- Trunk/pcgen/data/d20ogl/srd35/basics/rsrd_kits_races__animals.lst 2007-09-30 18:02:02 UTC (rev 4191)
+++ Trunk/pcgen/data/d20ogl/srd35/basics/rsrd_kits_races__animals.lst 2007-09-30 19:14:30 UTC (rev 4192)
@@ -1,4 +1,4 @@
-# CVS $Revision$ $Author$ -- Tue Nov 15 19:57:24 2005 -- reformated by prettylst.pl v1.35 (build 529)
+# CVS $Revision$ $Author$ -- Sun Sep 30 12:06:30 2007 -- reformated by prettylst.pl v1.38 (build 2788)
SOURCELONG:Revised (v.3.5) System Reference Document SOURCESHORT:RSRD SOURCEWEB:http://www.wizards.com/default.asp?x=d20/article/srd35
STARTPACK:Default Ape VISIBLE:QUALIFY EQUIPBUY:0 PREMULT:1,[!PRERACE:1,%],[PRERACE:1,Ape]
@@ -295,9 +295,9 @@
RACE:Lizard (Monitor) !PRERACE:1,%
NAME:Monitor Lizard
ALIGN:TN
-SKILL:Listen RANK:1
-SKILL:Spot RANK:1
-SKILL:Climb RANK:4
+SKILL:Listen RANK:1
+SKILL:Spot RANK:1
+SKILL:Climb RANK:4
FEAT:Alertness
FEAT:Great Fortitude
STAT:STR=11|DEX=11|CON=11|INT=10|WIS=10|CHA=10
Modified: Trunk/pcgen/data/d20ogl/srd35/basics/rsrd_races__animals.lst
===================================================================
--- Trunk/pcgen/data/d20ogl/srd35/basics/rsrd_races__animals.lst 2007-09-30 18:02:02 UTC (rev 4191)
+++ Trunk/pcgen/data/d20ogl/srd35/basics/rsrd_races__animals.lst 2007-09-30 19:14:30 UTC (rev 4192)
@@ -1,125 +1,125 @@
-# CVS $Revision$ $Author$ -- Tue Feb 28 19:45:33 2006 -- reformated by prettylst.pl v1.35 (build 556)
+# CVS $Revision$ $Author$ -- Sun Sep 30 12:06:30 2007 -- reformated by prettylst.pl v1.38 (build 2788)
SOURCELONG:Revised (v.3.5) System Reference Document SOURCESHORT:RSRD SOURCEWEB:http://www.wizards.com/default.asp?x=d20/article/srd35
# Andargor monster export
###Block: A
-# Race Name Starting Feats Size Move Face/Space Reach Vision Required AL Save checks bonus Combat bonus Bonus to skill rank Stat bonus Racial HD Class Skills Default Monster Feat Nb Legs Nb Hands Natural Attacks Special Ability HITDICE MONSTERCLASS Main Race Type Type Hit Dice Advancement CR Source Page
-Ape STARTFEATS:1 SIZE:L MOVE:Walk,30,Climb,30 FACE:10 REACH:10 VISION:Low-light PREALIGN:TN BONUS:CHECKS|BASE.Fortitude,BASE.Reflex|4|PREDEFAULTMONSTER:Y BONUS:CHECKS|BASE.Will|1|PREDEFAULTMONSTER:Y BONUS:COMBAT|AC|3|TYPE=NaturalArmor.REPLACE BONUS:COMBAT|BAB|3|PREDEFAULTMONSTER:Y BONUS:SKILLRANK|Climb|1|PREDEFAULTMONSTER:Y BONUS:SKILLRANK|Listen,Spot|3|PREDEFAULTMONSTER:Y BONUS:STAT|STR|10 BONUS:STAT|DEX|4 BONUS:STAT|CON|4 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-4 BONUS:STAT|STR,DEX,CHA|1|PREDEFAULTMONSTER:Y MONCSKILL:Climb|Listen|Spot MFEAT:Alertness|Toughness LEGS:2 HANDS:3 NATURALATTACKS:Claw,Weapon.Natural.Melee.Finesseable.Piercing.Slashing,*2,1d6|Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,1d6 SA:Scent (Ex) HITDICE:4,8 MONSTERCLASS:Animal:4 RACETYPE:Animal TYPE:Animal HITDICEADVANCEMENT:8 CR:2 SOURCEPAGE:MonstersAnimals.rtf
+# Race Name Starting Feats Size Move Face/Space Reach Vision Required AL Combat bonus Stat bonus Racial HD Class Skills Nb Legs Nb Hands Natural Attacks Special Ability MONSTERCLASS Main Race Type Type Hit Dice Advancement CR Source Page
+Ape STARTFEATS:1 SIZE:L MOVE:Walk,30,Climb,30 FACE:10 REACH:10 VISION:Low-light PREALIGN:TN BONUS:COMBAT|AC|3|TYPE=NaturalArmor.REPLACE BONUS:STAT|STR|10 BONUS:STAT|DEX|4 BONUS:STAT|CON|4 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-4 MONCSKILL:Climb|Listen|Spot LEGS:2 HANDS:3 NATURALATTACKS:Claw,Weapon.Natural.Melee.Finesseable.Piercing.Slashing,*2,1d6|Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,1d6 SA:Scent (Ex) MONSTERCLASS:Animal:4 RACETYPE:Animal TYPE:Animal HITDICEADVANCEMENT:8 CR:2 SOURCEPAGE:MonstersAnimals.rtf
###Block: B
-# Race Name Output Name Starting Feats Size Move Face/Space Reach Vision Required AL Save checks bonus Combat bonus Bonus to skill Bonus to skill rank Stat bonus Racial HD Class Skills Feat Default Monster Feat Nb Legs Nb Hands Weapon prof. bonus Natural Attacks Special Ability HITDICE MONSTERCLASS Main Race Type Type Template Hit Dice Advancement CR Source Page
-Baboon STARTFEATS:1 SIZE:M MOVE:Walk,40,Climb,30 FACE:5 REACH:5 VISION:Low-light PREALIGN:TN BONUS:CHECKS|BASE.Fortitude,BASE.Reflex|2|PREDEFAULTMONSTER:Y BONUS:COMBAT|AC|1|TYPE=NaturalArmor.REPLACE BONUS:SKILLRANK|Listen,Spot|2|PREDEFAULTMONSTER:Y BONUS:STAT|STR|4 BONUS:STAT|DEX|4 BONUS:STAT|CON|2 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-6 BONUS:STAT|STR|1|PREDEFAULTMONSTER:Y MONCSKILL:Climb|Listen|Spot MFEAT:Alertness LEGS:2 BONUS:WEAPONPROF=Bite|DAMAGE|max(0,(STR/2)) NATURALATTACKS:Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,1d6 SA:Scent (Ex) HITDICE:1,8 MONSTERCLASS:Animal:1 RACETYPE:Animal TYPE:Animal HITDICEADVANCEMENT:3 CR:1/2 SOURCEPAGE:MonstersAnimals.rtf
-Badger STARTFEATS:1 SIZE:S MOVE:Walk,30,Burrow,10 FACE:5 REACH:5 VISION:Low-light PREALIGN:TN BONUS:CHECKS|BASE.Fortitude,BASE.Reflex|2|PREDEFAULTMONSTER:Y BONUS:COMBAT|AC|1|TYPE=NaturalArmor.REPLACE BONUS:SKILL|Escape Artist|4|TYPE=Racial BONUS:SKILLRANK|Listen,Spot|2|PREDEFAULTMONSTER:Y BONUS:STAT|STR|-2 BONUS:STAT|DEX|6 BONUS:STAT|CON|4 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-4 BONUS:STAT|DEX,CON|1|PREDEFAULTMONSTER:Y MONCSKILL:Escape Artist|Listen|Spot FEAT:Track MFEAT:Weapon Finesse LEGS:4 HANDS:3 NATURALATTACKS:Claw,Weapon.Natural.Melee.Finesseable.Piercing.Slashing,*2,1d2|Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,1d3 SA:Rage (Ex) SA:Scent (Ex) HITDICE:1,8 MONSTERCLASS:Animal:1 RACETYPE:Animal TYPE:Animal HITDICEADVANCEMENT:2 CR:1/2 SOURCEPAGE:MonstersAnimals.rtf
-Bat STARTFEATS:1 SIZE:D MOVE:Walk,5,Fly,40 FACE:1 REACH:0 VISION:Low-light|Blindsense (20') PREALIGN:TN BONUS:CHECKS|BASE.Fortitude,BASE.Reflex|2|PREDEFAULTMONSTER:Y BONUS:SKILL|Listen,Spot|4|TYPE=Racial BONUS:SKILLRANK|Move Silently|4|PREDEFAULTMONSTER:Y BONUS:STAT|STR|-9 BONUS:STAT|DEX|4 BONUS:STAT|INT|-8 BONUS:STAT|WIS|4 BONUS:STAT|CHA|-6 BONUS:STAT|DEX|1|PREDEFAULTMONSTER:Y MONCSKILL:Hide|Listen|Move Silently|Spot MFEAT:Alertness LEGS:2 SA:Blindsense (Ex) HITDICE:1,8 MONSTERCLASS:Animal:1 RACETYPE:Animal TYPE:Animal TEMPLATE:Quarter Hitdie CR:1/10 SOURCEPAGE:MonstersAnimals.rtf
-Bear (Black) OUTPUTNAME:[NAME] Bear STARTFEATS:1 SIZE:M MOVE:Walk,40 FACE:5 REACH:5 VISION:Low-light PREALIGN:TN BONUS:CHECKS|BASE.Fortitude,BASE.Reflex|3|PREDEFAULTMONSTER:Y BONUS:CHECKS|BASE.Will|1|PREDEFAULTMONSTER:Y BONUS:COMBAT|AC|2|TYPE=NaturalArmor.REPLACE BONUS:COMBAT|BAB|2|PREDEFAULTMONSTER:Y BONUS:SKILL|Swim|4|TYPE=Racial BONUS:SKILLRANK|Listen,Spot|3|PREDEFAULTMONSTER:Y BONUS:STAT|STR|8 BONUS:STAT|DEX|2 BONUS:STAT|CON|4 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-4 BONUS:STAT|STR,DEX,CON|1|PREDEFAULTMONSTER:Y MONCSKILL:Climb|Listen|Spot|Swim MFEAT:Endurance|Run LEGS:4 HANDS:3 NATURALATTACKS:Claw,Weapon.Natural.Melee.Finesseable.Piercing.Slashing,*2,1d4|Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,1d6 SA:Scent (Ex) HITDICE:3,8 MONSTERCLASS:Animal:3 RACETYPE:Animal TYPE:Animal HITDICEADVANCEMENT:5 CR:2 SOURCEPAGE:MonstersAnimals.rtf
-Bear (Brown) OUTPUTNAME:[NAME] Bear STARTFEATS:1 SIZE:L MOVE:Walk,40 FACE:10 REACH:5 VISION:Low-light PREALIGN:TN BONUS:CHECKS|BASE.Fortitude,BASE.Reflex|5|PREDEFAULTMONSTER:Y BONUS:CHECKS|BASE.Will|2|PREDEFAULTMONSTER:Y BONUS:COMBAT|AC|5|TYPE=NaturalArmor.REPLACE BONUS:COMBAT|BAB|4|PREDEFAULTMONSTER:Y BONUS:SKILL|Swim|4|TYPE=Racial BONUS:SKILLRANK|Spot|6|PREDEFAULTMONSTER:Y BONUS:SKILLRANK|Listen|3|PREDEFAULTMONSTER:Y BONUS:STAT|STR|16 BONUS:STAT|DEX|2 BONUS:STAT|CON|8 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-4 BONUS:STAT|STR,DEX,CON|1|PREDEFAULTMONSTER:Y MONCSKILL:Listen|Spot|Swim MFEAT:Endurance|Run|Track LEGS:4 HANDS:3 NATURALATTACKS:Claw,Weapon.Natural.Melee.Finesseable.Piercing.Slashing,*2,1d8|Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,2d6 SA:Improved Grab (Ex) SA:Scent (Ex) HITDICE:6,8 MONSTERCLASS:Animal:6 RACETYPE:Animal TYPE:Animal HITDICEADVANCEMENT:10 CR:4 SOURCEPAGE:MonstersAnimals.rtf
-Bear (Polar) OUTPUTNAME:[NAME] Bear STARTFEATS:1 SIZE:L MOVE:Walk,40,Swim,30 FACE:10 REACH:5 VISION:Low-light PREALIGN:TN BONUS:CHECKS|BASE.Fortitude,BASE.Reflex|6|PREDEFAULTMONSTER:Y BONUS:CHECKS|BASE.Will|2|PREDEFAULTMONSTER:Y BONUS:COMBAT|AC|5|TYPE=NaturalArmor.REPLACE BONUS:COMBAT|BAB|6|PREDEFAULTMONSTER:Y BONUS:SKILLRANK|Spot|6|PREDEFAULTMONSTER:Y BONUS:SKILLRANK|Listen|4|PREDEFAULTMONSTER:Y BONUS:SKILLRANK|Hide|1|PREDEFAULTMONSTER:Y BONUS:STAT|STR|16 BONUS:STAT|DEX|2 BONUS:STAT|CON|8 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-4 BONUS:STAT|STR,DEX,CON|1|PREDEFAULTMONSTER:Y MONCSKILL:Hide|Listen|Spot|Swim MFEAT:Endurance|Run|Track LEGS:4 HANDS:3 NATURALATTACKS:Claw,Weapon.Natural.Melee.Finesseable.Piercing.Slashing,*2,1d8|Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,2d6 SA:Improved Grab (Ex) SA:Scent (Ex) HITDICE:8,8 MONSTERCLASS:Animal:8 RACETYPE:Animal TYPE:Animal HITDICEADVANCEMENT:12 CR:4 SOURCEPAGE:MonstersAnimals.rtf
-Bison STARTFEATS:1 SIZE:L MOVE:Walk,40 FACE:10 REACH:5 VISION:Low-light PREALIGN:TN BONUS:CHECKS|BASE.Fortitude,BASE.Reflex|4|PREDEFAULTMONSTER:Y BONUS:CHECKS|BASE.Will|1|PREDEFAULTMONSTER:Y BONUS:COMBAT|AC|4|TYPE=NaturalArmor.REPLACE BONUS:COMBAT|BAB|3|PREDEFAULTMONSTER:Y BONUS:SKILLRANK|Spot|3|PREDEFAULTMONSTER:Y BONUS:SKILLRANK|Listen|5|PREDEFAULTMONSTER:Y BONUS:STAT|STR|12 BONUS:STAT|CON|6 BONUS:STAT|INT|-8 BONUS:STAT|CHA|-6 BONUS:STAT|WIS|1|PREDEFAULTMONSTER:Y MONCSKILL:Listen|Spot MFEAT:Alertness|Endurance LEGS:4 BONUS:WEAPONPROF=Gore|DAMAGE|max(0,(STR/2)) NATURALATTACKS:Gore,Weapon.Natural.Melee.Finesseable.Piercing,*1,1d8 SA:Stampede (Ex) SA:Scent (Ex) HITDICE:5,8 MONSTERCLASS:Animal:5 RACETYPE:Animal TYPE:Animal HITDICEADVANCEMENT:7 CR:2 SOURCEPAGE:MonstersAnimals.rtf
-Boar STARTFEATS:1 SIZE:M MOVE:Walk,40 FACE:5 REACH:5 VISION:Low-light PREALIGN:TN BONUS:CHECKS|BASE.Fortitude,BASE.Reflex|3|PREDEFAULTMONSTER:Y BONUS:CHECKS|BASE.Will|1|PREDEFAULTMONSTER:Y BONUS:COMBAT|AC|6|TYPE=NaturalArmor.REPLACE BONUS:COMBAT|BAB|2|PREDEFAULTMONSTER:Y BONUS:SKILLRANK|Listen|4|PREDEFAULTMONSTER:Y BONUS:SKILLRANK|Spot|2|PREDEFAULTMONSTER:Y BONUS:STAT|STR|4 BONUS:STAT|CON|6 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-6 BONUS:STAT|STR,CON,WIS|1|PREDEFAULTMONSTER:Y MONCSKILL:Listen|Spot MFEAT:Alertness|Toughness LEGS:4 BONUS:WEAPONPROF=Gore|DAMAGE|max(0,(STR/2)) NATURALATTACKS:Gore,Weapon.Natural.Melee.Finesseable.Piercing,*1,1d8 SA:Ferocity (Ex) SA:Scent (Ex) HITDICE:3,8 MONSTERCLASS:Animal:3 RACETYPE:Animal TYPE:Animal HITDICEADVANCEMENT:5 CR:2 SOURCEPAGE:MonstersAnimals.rtf
+# Race Name Output Name Starting Feats Size Move Face/Space Reach Vision Required AL Combat bonus Bonus to skill Stat bonus Racial HD Class Skills Feat Nb Legs Nb Hands Weapon prof. bonus Natural Attacks Special Ability MONSTERCLASS Main Race Type Type Template Hit Dice Advancement CR Source Page
+Baboon STARTFEATS:1 SIZE:M MOVE:Walk,40,Climb,30 FACE:5 REACH:5 VISION:Low-light PREALIGN:TN BONUS:COMBAT|AC|1|TYPE=NaturalArmor.REPLACE BONUS:STAT|STR|4 BONUS:STAT|DEX|4 BONUS:STAT|CON|2 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-6 MONCSKILL:Climb|Listen|Spot LEGS:2 BONUS:WEAPONPROF=Bite|DAMAGE|max(0,(STR/2)) NATURALATTACKS:Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,1d6 SA:Scent (Ex) MONSTERCLASS:Animal:1 RACETYPE:Animal TYPE:Animal HITDICEADVANCEMENT:3 CR:1/2 SOURCEPAGE:MonstersAnimals.rtf
+Badger STARTFEATS:1 SIZE:S MOVE:Walk,30,Burrow,10 FACE:5 REACH:5 VISION:Low-light PREALIGN:TN BONUS:COMBAT|AC|1|TYPE=NaturalArmor.REPLACE BONUS:SKILL|Escape Artist|4|TYPE=Racial BONUS:STAT|STR|-2 BONUS:STAT|DEX|6 BONUS:STAT|CON|4 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-4 MONCSKILL:Escape Artist|Listen|Spot FEAT:Track LEGS:4 HANDS:3 NATURALATTACKS:Claw,Weapon.Natural.Melee.Finesseable.Piercing.Slashing,*2,1d2|Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,1d3 SA:Rage (Ex) SA:Scent (Ex) MONSTERCLASS:Animal:1 RACETYPE:Animal TYPE:Animal HITDICEADVANCEMENT:2 CR:1/2 SOURCEPAGE:MonstersAnimals.rtf
+Bat STARTFEATS:1 SIZE:D MOVE:Walk,5,Fly,40 FACE:1 REACH:0 VISION:Low-light|Blindsense (20') PREALIGN:TN BONUS:SKILL|Listen,Spot|4|TYPE=Racial BONUS:STAT|STR|-9 BONUS:STAT|DEX|4 BONUS:STAT|INT|-8 BONUS:STAT|WIS|4 BONUS:STAT|CHA|-6 MONCSKILL:Hide|Listen|Move Silently|Spot LEGS:2 SA:Blindsense (Ex) MONSTERCLASS:Animal:1 RACETYPE:Animal TYPE:Animal TEMPLATE:Quarter Hitdie CR:1/10 SOURCEPAGE:MonstersAnimals.rtf
+Bear (Black) OUTPUTNAME:[NAME] Bear STARTFEATS:1 SIZE:M MOVE:Walk,40 FACE:5 REACH:5 VISION:Low-light PREALIGN:TN BONUS:COMBAT|AC|2|TYPE=NaturalArmor.REPLACE BONUS:SKILL|Swim|4|TYPE=Racial BONUS:STAT|STR|8 BONUS:STAT|DEX|2 BONUS:STAT|CON|4 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-4 MONCSKILL:Climb|Listen|Spot|Swim LEGS:4 HANDS:3 NATURALATTACKS:Claw,Weapon.Natural.Melee.Finesseable.Piercing.Slashing,*2,1d4|Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,1d6 SA:Scent (Ex) MONSTERCLASS:Animal:3 RACETYPE:Animal TYPE:Animal HITDICEADVANCEMENT:5 CR:2 SOURCEPAGE:MonstersAnimals.rtf
+Bear (Brown) OUTPUTNAME:[NAME] Bear STARTFEATS:1 SIZE:L MOVE:Walk,40 FACE:10 REACH:5 VISION:Low-light PREALIGN:TN BONUS:COMBAT|AC|5|TYPE=NaturalArmor.REPLACE BONUS:SKILL|Swim|4|TYPE=Racial BONUS:STAT|STR|16 BONUS:STAT|DEX|2 BONUS:STAT|CON|8 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-4 MONCSKILL:Listen|Spot|Swim LEGS:4 HANDS:3 NATURALATTACKS:Claw,Weapon.Natural.Melee.Finesseable.Piercing.Slashing,*2,1d8|Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,2d6 SA:Improved Grab (Ex) SA:Scent (Ex) MONSTERCLASS:Animal:6 RACETYPE:Animal TYPE:Animal HITDICEADVANCEMENT:10 CR:4 SOURCEPAGE:MonstersAnimals.rtf
+Bear (Polar) OUTPUTNAME:[NAME] Bear STARTFEATS:1 SIZE:L MOVE:Walk,40,Swim,30 FACE:10 REACH:5 VISION:Low-light PREALIGN:TN BONUS:COMBAT|AC|5|TYPE=NaturalArmor.REPLACE BONUS:STAT|STR|16 BONUS:STAT|DEX|2 BONUS:STAT|CON|8 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-4 MONCSKILL:Hide|Listen|Spot|Swim LEGS:4 HANDS:3 NATURALATTACKS:Claw,Weapon.Natural.Melee.Finesseable.Piercing.Slashing,*2,1d8|Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,2d6 SA:Improved Grab (Ex) SA:Scent (Ex) MONSTERCLASS:Animal:8 RACETYPE:Animal TYPE:Animal HITDICEADVANCEMENT:12 CR:4 SOURCEPAGE:MonstersAnimals.rtf
+Bison STARTFEATS:1 SIZE:L MOVE:Walk,40 FACE:10 REACH:5 VISION:Low-light PREALIGN:TN BONUS:COMBAT|AC|4|TYPE=NaturalArmor.REPLACE BONUS:STAT|STR|12 BONUS:STAT|CON|6 BONUS:STAT|INT|-8 BONUS:STAT|CHA|-6 MONCSKILL:Listen|Spot LEGS:4 BONUS:WEAPONPROF=Gore|DAMAGE|max(0,(STR/2)) NATURALATTACKS:Gore,Weapon.Natural.Melee.Finesseable.Piercing,*1,1d8 SA:Stampede (Ex) SA:Scent (Ex) MONSTERCLASS:Animal:5 RACETYPE:Animal TYPE:Animal HITDICEADVANCEMENT:7 CR:2 SOURCEPAGE:MonstersAnimals.rtf
+Boar STARTFEATS:1 SIZE:M MOVE:Walk,40 FACE:5 REACH:5 VISION:Low-light PREALIGN:TN BONUS:COMBAT|AC|6|TYPE=NaturalArmor.REPLACE BONUS:STAT|STR|4 BONUS:STAT|CON|6 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-6 MONCSKILL:Listen|Spot LEGS:4 BONUS:WEAPONPROF=Gore|DAMAGE|max(0,(STR/2)) NATURALATTACKS:Gore,Weapon.Natural.Melee.Finesseable.Piercing,*1,1d8 SA:Ferocity (Ex) SA:Scent (Ex) MONSTERCLASS:Animal:3 RACETYPE:Animal TYPE:Animal HITDICEADVANCEMENT:5 CR:2 SOURCEPAGE:MonstersAnimals.rtf
###Block: C
-# Race Name Output Name Starting Feats Size Move Face/Space Reach Vision Required AL Save checks bonus Combat bonus Bonus to skill Bonus to skill rank Stat bonus Racial HD Class Skills Default Monster Feat Nb Legs Nb Hands Weapon prof. bonus Natural Attacks Special Ability HITDICE MONSTERCLASS Main Race Type Type Template Hit Dice Advancement CR Source Page
-Camel STARTFEATS:1 SIZE:L MOVE:Walk,50 FACE:10 REACH:5 VISION:Low-light PREALIGN:TN BONUS:CHECKS|BASE.Fortitude,BASE.Reflex|3|PREDEFAULTMONSTER:Y BONUS:CHECKS|BASE.Will|1|PREDEFAULTMONSTER:Y BONUS:COMBAT|AC|1|TYPE=NaturalArmor.REPLACE BONUS:COMBAT|BAB|2|PREDEFAULTMONSTER:Y BONUS:SKILLRANK|Listen,Spot|3|PREDEFAULTMONSTER:Y BONUS:STAT|STR|8 BONUS:STAT|DEX|6 BONUS:STAT|CON|4 BONUS:STAT|INT|-8 BONUS:STAT|CHA|-6 BONUS:STAT|WIS|1|PREDEFAULTMONSTER:Y MONCSKILL:Listen|Spot MFEAT:Alertness|Endurance LEGS:4 BONUS:WEAPONPROF=Bite|DAMAGE|-ceil(STR/2) BONUS:WEAPONPROF=Bite|TOHIT|-5 NATURALATTACKS:Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,1d4 SA:Scent (Ex) HITDICE:3,8 MONSTERCLASS:Animal:3 RACETYPE:Animal TYPE:Animal CR:1 SOURCEPAGE:MonstersAnimals.rtf
+# Race Name Output Name Starting Feats Size Move Face/Space Reach Vision Required AL Combat bonus Add to base move Bonus to skill Stat bonus Racial HD Class Skills Nb Legs Nb Hands Weapon prof. bonus Natural Attacks Special Ability MONSTERCLASS Main Race Type Type Template Hit Dice Advancement CR Source Page
+Camel STARTFEATS:1 SIZE:L MOVE:Walk,50 FACE:10 REACH:5 VISION:Low-light PREALIGN:TN BONUS:COMBAT|AC|1|TYPE=NaturalArmor.REPLACE BONUS:STAT|STR|8 BONUS:STAT|DEX|6 BONUS:STAT|CON|4 BONUS:STAT|INT|-8 BONUS:STAT|CHA|-6 MONCSKILL:Listen|Spot LEGS:4 BONUS:WEAPONPROF=Bite|DAMAGE|-ceil(STR/2) BONUS:WEAPONPROF=Bite|TOHIT|-5 NATURALATTACKS:Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,1d4 SA:Scent (Ex) MONSTERCLASS:Animal:3 RACETYPE:Animal TYPE:Animal CR:1 SOURCEPAGE:MonstersAnimals.rtf
Camel.COPY=Camel (Bactrian)
-Camel (Bactrian).MOD OUTPUTNAME:[NAME] Camel BONUS:STAT|CON|2 BONUS:MOVEADD|TYPE.Walk|-10
-Cat STARTFEATS:1 SIZE:T MOVE:Walk,30 FACE:2.5 REACH:0 VISION:Low-light PREALIGN:TN BONUS:CHECKS|BASE.Fortitude,BASE.Reflex|2|PREDEFAULTMONSTER:Y BONUS:SKILL|Balance,Jump|8|TYPE=Racial BONUS:SKILL|Climb,Hide,Move Silently|4|TYPE=Racial BONUS:SKILL|Climb,Jump|(DEX-STR)|TYPE=Racial.STACK BONUS:SKILLRANK|Listen,Spot|2|PREDEFAULTMONSTER:Y BONUS:STAT|STR|-8 BONUS:STAT|DEX|4 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-4 BONUS:STAT|STR,DEX,CHA|1|PREDEFAULTMONSTER:Y MONCSKILL:Balance|Climb|Hide|Jump|Listen|Move Silently|Spot MFEAT:Weapon Finesse LEGS:4 HANDS:3 NATURALATTACKS:Claw,Weapon.Natural.Melee.Finesseable.Piercing.Slashing,*2,1d2|Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,1d3 SA:Scent (Ex) HITDICE:1,8 MONSTERCLASS:Animal:1 RACETYPE:Animal TYPE:Animal TEMPLATE:Half Hitdie CR:1/4 SOURCEPAGE:MonstersAnimals.rtf
-Cheetah STARTFEATS:1 SIZE:M MOVE:Walk,50 FACE:5 REACH:5 VISION:Low-light PREALIGN:TN BONUS:CHECKS|BASE.Fortitude,BASE.Reflex|3|PREDEFAULTMONSTER:Y BONUS:CHECKS|BASE.Will|1|PREDEFAULTMONSTER:Y BONUS:COMBAT|AC|1|TYPE=NaturalArmor.REPLACE BONUS:COMBAT|BAB|2|PREDEFAULTMONSTER:Y BONUS:SKILLRANK|Listen,Spot|1|PREDEFAULTMONSTER:Y BONUS:SKILLRANK|Hide,Move Silently|2|PREDEFAULTMONSTER:Y BONUS:STAT|STR|6 BONUS:STAT|DEX|8 BONUS:STAT|CON|4 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-4 BONUS:STAT|DEX,CON|1|PREDEFAULTMONSTER:Y MONCSKILL:Hide|Listen|Move Silently|Spot MFEAT:Alertness|Weapon Finesse LEGS:4 HANDS:3 NATURALATTACKS:Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,1d6|Claw,Weapon.Natural.Melee.Finesseable.Piercing.Slashing,*2,1d2 SA:Trip (Ex) SA:Scent (Ex) SA:Sprint (Ex) HITDICE:3,8 MONSTERCLASS:Animal:3 RACETYPE:Animal TYPE:Animal HITDICEADVANCEMENT:5 CR:2 SOURCEPAGE:MonstersAnimals.rtf
-Crocodile STARTFEATS:1 SIZE:M MOVE:Walk,20,Swim,30 FACE:5 REACH:5 VISION:Low-light PREALIGN:TN BONUS:CHECKS|BASE.Fortitude,BASE.Reflex|3|PREDEFAULTMONSTER:Y BONUS:CHECKS|BASE.Will|1|PREDEFAULTMONSTER:Y BONUS:COMBAT|AC|4|TYPE=NaturalArmor.REPLACE BONUS:COMBAT|BAB|2|PREDEFAULTMONSTER:Y BONUS:SKILLRANK|Hide|6|PREDEFAULTMONSTER:Y BONUS:SKILLRANK|Listen,Spot|1|PREDEFAULTMONSTER:Y BONUS:STAT|STR|8 BONUS:STAT|DEX|2 BONUS:STAT|CON|6 BONUS:STAT|INT|-9 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-8 BONUS:STAT|STR,CON|1|PREDEFAULTMONSTER:Y MONCSKILL:Hide|Listen|Spot|Swim MFEAT:Alertness|Skill Focus(Hide) LEGS:4 BONUS:WEAPONPROF=Bite|DAMAGE|max(0,(STR/2)) BONUS:WEAPONPROF=Tail Slap|DAMAGE|max(0,(STR/2)) NATURALATTACKS:Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,1d8 NATURALATTACKS:Tail Slap,Weapon.Natural.Melee.Finesseable.Bludgeoning,*1,1d12 SA:Improved Grab (Ex) SA:Hold Breath (Ex) HITDICE:3,8 MONSTERCLASS:Animal:3 RACETYPE:Animal TYPE:Animal HITDICEADVANCEMENT:5 CR:2 SOURCEPAGE:MonstersAnimals.rtf
-Crocodile (Giant) OUTPUTNAME:[NAME] Crocodile STARTFEATS:1 SIZE:H MOVE:Walk,20,Swim,30 FACE:15 REACH:10 VISION:Low-light PREALIGN:TN BONUS:CHECKS|BASE.Fortitude,BASE.Reflex|5|PREDEFAULTMONSTER:Y BONUS:CHECKS|BASE.Will|2|PREDEFAULTMONSTER:Y BONUS:COMBAT|AC|7|TYPE=NaturalArmor.REPLACE BONUS:COMBAT|BAB|5|PREDEFAULTMONSTER:Y BONUS:SKILLRANK|Hide,Swim|8|PREDEFAULTMONSTER:Y BONUS:SKILLRANK|Listen,Spot|2|PREDEFAULTMONSTER:Y BONUS:STAT|STR|16 BONUS:STAT|DEX|2 BONUS:STAT|CON|8 BONUS:STAT|INT|-9 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-8 BONUS:STAT|STR,CON|1|PREDEFAULTMONSTER:Y MONCSKILL:Hide|Listen|Spot|Swim MFEAT:Alertness|Endurance|Skill Focus(Hide) LEGS:4 BONUS:WEAPONPROF=Bite|DAMAGE|max(0,(STR/2)) BONUS:WEAPONPROF=Tail Slap|DAMAGE|max(0,(STR/2)) NATURALATTACKS:Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,2d8 NATURALATTACKS:Tail Slap,Weapon.Natural.Melee.Finesseable.Bludgeoning,*1,1d12 SA:Improved Grab (Ex) SA:Hold Breath (Ex) HITDICE:7,8 MONSTERCLASS:Animal:7 RACETYPE:Animal TYPE:Animal HITDICEADVANCEMENT:14 CR:4 SOURCEPAGE:MonstersAnimals.rtf
+Camel (Bactrian).MOD OUTPUTNAME:[NAME] Camel BONUS:MOVEADD|TYPE.Walk|-10 BONUS:STAT|CON|2
+Cat STARTFEATS:1 SIZE:T MOVE:Walk,30 FACE:2.5 REACH:0 VISION:Low-light PREALIGN:TN BONUS:SKILL|Balance,Jump|8|TYPE=Racial BONUS:SKILL|Climb,Hide,Move Silently|4|TYPE=Racial BONUS:SKILL|Climb,Jump|(DEX-STR)|TYPE=Racial.STACK BONUS:STAT|STR|-8 BONUS:STAT|DEX|4 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-4 MONCSKILL:Balance|Climb|Hide|Jump|Listen|Move Silently|Spot LEGS:4 HANDS:3 NATURALATTACKS:Claw,Weapon.Natural.Melee.Finesseable.Piercing.Slashing,*2,1d2|Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,1d3 SA:Scent (Ex) MONSTERCLASS:Animal:1 RACETYPE:Animal TYPE:Animal TEMPLATE:Half Hitdie CR:1/4 SOURCEPAGE:MonstersAnimals.rtf
+Cheetah STARTFEATS:1 SIZE:M MOVE:Walk,50 FACE:5 REACH:5 VISION:Low-light PREALIGN:TN BONUS:COMBAT|AC|1|TYPE=NaturalArmor.REPLACE BONUS:STAT|STR|6 BONUS:STAT|DEX|8 BONUS:STAT|CON|4 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-4 MONCSKILL:Hide|Listen|Move Silently|Spot LEGS:4 HANDS:3 NATURALATTACKS:Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,1d6|Claw,Weapon.Natural.Melee.Finesseable.Piercing.Slashing,*2,1d2 SA:Trip (Ex) SA:Scent (Ex) SA:Sprint (Ex) MONSTERCLASS:Animal:3 RACETYPE:Animal TYPE:Animal HITDICEADVANCEMENT:5 CR:2 SOURCEPAGE:MonstersAnimals.rtf
+Crocodile STARTFEATS:1 SIZE:M MOVE:Walk,20,Swim,30 FACE:5 REACH:5 VISION:Low-light PREALIGN:TN BONUS:COMBAT|AC|4|TYPE=NaturalArmor.REPLACE BONUS:STAT|STR|8 BONUS:STAT|DEX|2 BONUS:STAT|CON|6 BONUS:STAT|INT|-9 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-8 MONCSKILL:Hide|Listen|Spot|Swim LEGS:4 BONUS:WEAPONPROF=Bite|DAMAGE|max(0,(STR/2)) BONUS:WEAPONPROF=Tail Slap|DAMAGE|max(0,(STR/2)) NATURALATTACKS:Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,1d8 NATURALATTACKS:Tail Slap,Weapon.Natural.Melee.Finesseable.Bludgeoning,*1,1d12 SA:Improved Grab (Ex) SA:Hold Breath (Ex) MONSTERCLASS:Animal:3 RACETYPE:Animal TYPE:Animal HITDICEADVANCEMENT:5 CR:2 SOURCEPAGE:MonstersAnimals.rtf
+Crocodile (Giant) OUTPUTNAME:[NAME] Crocodile STARTFEATS:1 SIZE:H MOVE:Walk,20,Swim,30 FACE:15 REACH:10 VISION:Low-light PREALIGN:TN BONUS:COMBAT|AC|7|TYPE=NaturalArmor.REPLACE BONUS:STAT|STR|16 BONUS:STAT|DEX|2 BONUS:STAT|CON|8 BONUS:STAT|INT|-9 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-8 MONCSKILL:Hide|Listen|Spot|Swim LEGS:4 BONUS:WEAPONPROF=Bite|DAMAGE|max(0,(STR/2)) BONUS:WEAPONPROF=Tail Slap|DAMAGE|max(0,(STR/2)) NATURALATTACKS:Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,2d8 NATURALATTACKS:Tail Slap,Weapon.Natural.Melee.Finesseable.Bludgeoning,*1,1d12 SA:Improved Grab (Ex) SA:Hold Breath (Ex) MONSTERCLASS:Animal:7 RACETYPE:Animal TYPE:Animal HITDICEADVANCEMENT:14 CR:4 SOURCEPAGE:MonstersAnimals.rtf
###Block: D
-# Race Name Output Name Starting Feats Size Move Face/Space Reach Vision Required AL Save checks bonus Combat bonus Bonus to skill Bonus to skill rank Stat bonus Racial HD Class Skills Feat Default Monster Feat Nb Legs Weapon prof. bonus Natural Attacks Special Ability HITDICE MONSTERCLASS Main Race Type Type CR Source Page
-Dog STARTFEATS:1 SIZE:S MOVE:Walk,40 FACE:5 REACH:5 VISION:Low-light PREALIGN:TN BONUS:CHECKS|BASE.Fortitude,BASE.Reflex|2|PREDEFAULTMONSTER:Y BONUS:COMBAT|AC|1|TYPE=NaturalArmor.REPLACE BONUS:SKILL|Jump|4|TYPE=Racial BONUS:SKILLRANK|Jump,Listen,Spot|2|PREDEFAULTMONSTER:Y BONUS:STAT|STR|2 BONUS:STAT|DEX|6 BONUS:STAT|CON|4 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-4 BONUS:STAT|STR,DEX,CON|1|PREDEFAULTMONSTER:Y MONCSKILL:Jump|Listen|Spot|Survival FEAT:Track MFEAT:Alertness LEGS:4 BONUS:WEAPONPROF=Bite|DAMAGE|max(0,(STR/2)) NATURALATTACKS:Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,1d4 SA:Scent (Ex) HITDICE:1,8 MONSTERCLASS:Animal:1 RACETYPE:Animal TYPE:Animal CR:1/3 SOURCEPAGE:MonstersAnimals.rtf
-Dog (Riding) OUTPUTNAME:[NAME] Dog STARTFEATS:1 SIZE:M MOVE:Walk,40 FACE:5 REACH:5 VISION:Low-light PREALIGN:TN BONUS:CHECKS|BASE.Fortitude,BASE.Reflex|3|PREDEFAULTMONSTER:Y BONUS:COMBAT|AC|4|TYPE=NaturalArmor.REPLACE BONUS:COMBAT|BAB|1|PREDEFAULTMONSTER:Y BONUS:SKILL|Jump|4|TYPE=Racial BONUS:SKILLRANK|Swim|1|PREDEFAULTMONSTER:Y BONUS:SKILLRANK|Jump,Listen,Spot|2|PREDEFAULTMONSTER:Y BONUS:STAT|STR|4 BONUS:STAT|DEX|4 BONUS:STAT|CON|4 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-4 BONUS:STAT|STR,DEX,CON|1|PREDEFAULTMONSTER:Y MONCSKILL:Jump|Listen|Spot|Swim|Survival FEAT:Track MFEAT:Alertness LEGS:4 BONUS:WEAPONPROF=Bite|DAMAGE|max(0,(STR/2)) NATURALATTACKS:Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,1d6 SA:Scent (Ex) HITDICE:2,8 MONSTERCLASS:Animal:2 RACETYPE:Animal TYPE:Animal CR:1 SOURCEPAGE:MonstersAnimals.rtf
-Donkey STARTFEATS:1 SIZE:M MOVE:Walk,30 FACE:5 REACH:5 VISION:Low-light PREALIGN:TN BONUS:CHECKS|BASE.Fortitude,BASE.Reflex|3|PREDEFAULTMONSTER:Y BONUS:COMBAT|AC|2|TYPE=NaturalArmor.REPLACE BONUS:COMBAT|BAB|1|PREDEFAULTMONSTER:Y BONUS:SKILL|Balance|2|TYPE=Racial BONUS:SKILLRANK|Listen|3|PREDEFAULTMONSTER:Y BONUS:SKILLRANK|Spot|2|PREDEFAULTMONSTER:Y BONUS:STAT|DEX|2 BONUS:STAT|CON|2 BONUS:STAT|INT|-8 BONUS:STAT|CHA|-6 BONUS:STAT|DEX,WIS|1|PREDEFAULTMONSTER:Y MONCSKILL:Balance|Listen|Spot MFEAT:Endurance LEGS:4 BONUS:WEAPONPROF=Bite|DAMAGE|max(0,(STR/2)) NATURALATTACKS:Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,1d2 SA:Scent (Ex) HITDICE:2,8 MONSTERCLASS:Animal:2 RACETYPE:Animal TYPE:Animal CR:1/6 SOURCEPAGE:MonstersAnimals.rtf
+# Race Name Output Name Starting Feats Size Move Face/Space Reach Vision Required AL Combat bonus Bonus to skill Stat bonus Racial HD Class Skills Feat Nb Legs Weapon prof. bonus Natural Attacks Special Ability MONSTERCLASS Main Race Type Type CR Source Page
+Dog STARTFEATS:1 SIZE:S MOVE:Walk,40 FACE:5 REACH:5 VISION:Low-light PREALIGN:TN BONUS:COMBAT|AC|1|TYPE=NaturalArmor.REPLACE BONUS:SKILL|Jump|4|TYPE=Racial BONUS:STAT|STR|2 BONUS:STAT|DEX|6 BONUS:STAT|CON|4 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-4 MONCSKILL:Jump|Listen|Spot|Survival FEAT:Track LEGS:4 BONUS:WEAPONPROF=Bite|DAMAGE|max(0,(STR/2)) NATURALATTACKS:Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,1d4 SA:Scent (Ex) MONSTERCLASS:Animal:1 RACETYPE:Animal TYPE:Animal CR:1/3 SOURCEPAGE:MonstersAnimals.rtf
+Dog (Riding) OUTPUTNAME:[NAME] Dog STARTFEATS:1 SIZE:M MOVE:Walk,40 FACE:5 REACH:5 VISION:Low-light PREALIGN:TN BONUS:COMBAT|AC|4|TYPE=NaturalArmor.REPLACE BONUS:SKILL|Jump|4|TYPE=Racial BONUS:STAT|STR|4 BONUS:STAT|DEX|4 BONUS:STAT|CON|4 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-4 MONCSKILL:Jump|Listen|Spot|Swim|Survival FEAT:Track LEGS:4 BONUS:WEAPONPROF=Bite|DAMAGE|max(0,(STR/2)) NATURALATTACKS:Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,1d6 SA:Scent (Ex) MONSTERCLASS:Animal:2 RACETYPE:Animal TYPE:Animal CR:1 SOURCEPAGE:MonstersAnimals.rtf
+Donkey STARTFEATS:1 SIZE:M MOVE:Walk,30 FACE:5 REACH:5 VISION:Low-light PREALIGN:TN BONUS:COMBAT|AC|2|TYPE=NaturalArmor.REPLACE BONUS:SKILL|Balance|2|TYPE=Racial BONUS:STAT|DEX|2 BONUS:STAT|CON|2 BONUS:STAT|INT|-8 BONUS:STAT|CHA|-6 MONCSKILL:Balance|Listen|Spot LEGS:4 BONUS:WEAPONPROF=Bite|DAMAGE|max(0,(STR/2)) NATURALATTACKS:Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,1d2 SA:Scent (Ex) MONSTERCLASS:Animal:2 RACETYPE:Animal TYPE:Animal CR:1/6 SOURCEPAGE:MonstersAnimals.rtf
###Block: E
-# Race Name Starting Feats Size Move Face/Space Reach Vision Required AL Save checks bonus Combat bonus Bonus to skill Bonus to skill rank Stat bonus Racial HD Class Skills Default Monster Feat Nb Legs Nb Hands Weapon prof. bonus Natural Attacks Special Ability HITDICE MONSTERCLASS Main Race Type Type Hit Dice Advancement CR Source Page
-Eagle STARTFEATS:1 SIZE:S MOVE:Walk,10,Fly,80 FACE:5 REACH:5 VISION:Low-light PREALIGN:TN BONUS:CHECKS|BASE.Fortitude,BASE.Reflex|2|PREDEFAULTMONSTER:Y BONUS:COMBAT|AC|1|TYPE=NaturalArmor.REPLACE BONUS:SKILL|Spot|8|TYPE=Racial BONUS:SKILLRANK|Spot|4|PREDEFAULTMONSTER:Y BONUS:STAT|DEX|4 BONUS:STAT|CON|2 BONUS:STAT|INT|-8 BONUS:STAT|WIS|4 BONUS:STAT|CHA|-4 BONUS:STAT|DEX|1|PREDEFAULTMONSTER:Y MONCSKILL:Listen|Spot MFEAT:Weapon Finesse LEGS:2 HANDS:3 NATURALATTACKS:Talons,Weapon.Natural.Melee.Finesseable.Piercing.Slashing,*2,1d4|Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,1d4 HITDICE:1,8 MONSTERCLASS:Animal:1 RACETYPE:Animal TYPE:Animal HITDICEADVANCEMENT:1,3 CR:1/2 SOURCEPAGE:MonstersAnimals.rtf
-Elephant STARTFEATS:1 SIZE:H MOVE:Walk,40 FACE:15 REACH:10 VISION:Low-light PREALIGN:TN BONUS:CHECKS|BASE.Fortitude,BASE.Reflex|7|PREDEFAULTMONSTER:Y BONUS:CHECKS|BASE.Will|5|PREDEFAULTMONSTER:Y BONUS:COMBAT|AC|7|TYPE=NaturalArmor.REPLACE BONUS:COMBAT|BAB|8|PREDEFAULTMONSTER:Y BONUS:SKILLRANK|Spot|7|PREDEFAULTMONSTER:Y BONUS:SKILLRANK|Listen|9|PREDEFAULTMONSTER:Y BONUS:STAT|STR|20 BONUS:STAT|CON|10 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-4 BONUS:STAT|CON,WIS,CHA|1|PREDEFAULTMONSTER:Y MONCSKILL:Listen|Spot MFEAT:Alertness|Endurance|Iron Will|Skill Focus(Listen) LEGS:4 HANDS:3 BONUS:WEAPONPROF=Gore|DAMAGE|max(0,(STR/2)) NATURALATTACKS:Slam,Weapon.Natural.Melee.Finesseable.Bludgeoning,*1,2d6|Stamp,Weapon.Natural.Melee.Finesseable.Bludgeoning,*1,2d6 NATURALATTACKS:Gore,Weapon.Natural.Melee.Finesseable.Piercing,*1,2d8 SA:Trample (Ex) SA:Scent (Ex) HITDICE:11,8 MONSTERCLASS:Animal:11 RACETYPE:Animal TYPE:Animal HITDICEADVANCEMENT:22 CR:7 SOURCEPAGE:MonstersAnimals.rtf
+# Race Name Output Name Starting Feats Size Move Face/Space Reach Vision Required AL Combat bonus Bonus to skill Stat bonus Racial HD Class Skills Nb Legs Nb Hands Weapon prof. bonus Natural Attacks Special Ability MONSTERCLASS Main Race Type Type Hit Dice Advancement CR Source Page
+Eagle STARTFEATS:1 SIZE:S MOVE:Walk,10,Fly,80 FACE:5 REACH:5 VISION:Low-light PREALIGN:TN BONUS:COMBAT|AC|1|TYPE=NaturalArmor.REPLACE BONUS:SKILL|Spot|8|TYPE=Racial BONUS:STAT|DEX|4 BONUS:STAT|CON|2 BONUS:STAT|INT|-8 BONUS:STAT|WIS|4 BONUS:STAT|CHA|-4 MONCSKILL:Listen|Spot LEGS:2 HANDS:3 NATURALATTACKS:Talons,Weapon.Natural.Melee.Finesseable.Piercing.Slashing,*2,1d4|Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,1d4 MONSTERCLASS:Animal:1 RACETYPE:Animal TYPE:Animal HITDICEADVANCEMENT:1,3 CR:1/2 SOURCEPAGE:MonstersAnimals.rtf
+Elephant STARTFEATS:1 SIZE:H MOVE:Walk,40 FACE:15 REACH:10 VISION:Low-light PREALIGN:TN BONUS:COMBAT|AC|7|TYPE=NaturalArmor.REPLACE BONUS:STAT|STR|20 BONUS:STAT|CON|10 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-4 MONCSKILL:Listen|Spot LEGS:4 HANDS:3 BONUS:WEAPONPROF=Gore|DAMAGE|max(0,(STR/2)) NATURALATTACKS:Slam,Weapon.Natural.Melee.Finesseable.Bludgeoning,*1,2d6|Stamp,Weapon.Natural.Melee.Finesseable.Bludgeoning,*1,2d6 NATURALATTACKS:Gore,Weapon.Natural.Melee.Finesseable.Piercing,*1,2d8 SA:Trample (Ex) SA:Scent (Ex) MONSTERCLASS:Animal:11 RACETYPE:Animal TYPE:Animal HITDICEADVANCEMENT:22 CR:7 SOURCEPAGE:MonstersAnimals.rtf
Elephant.COPY=Elephant (Indian)
-Elephant (Indian).MOD OUTPUTNAME:[NAME] Elephant BONUS:STAT|STR|-2 BONUS:STAT|WIS|2
+Elephant (Indian).MOD OUTPUTNAME:[NAME] Elephant BONUS:STAT|STR|-2 BONUS:STAT|WIS|2
###Block: H
-# Race Name Output Name Starting Feats Size Move Face/Space Reach Vision Required AL Save checks bonus Combat bonus Bonus to skill Bonus to skill rank Stat bonus Racial HD Class Skills Default Monster Feat Nb Legs Nb Hands Weapon prof. bonus Natural Attacks Special Ability HITDICE MONSTERCLASS Main Race Type Type Hit Dice Advancement CR Source Page
-Hawk STARTFEATS:1 SIZE:T MOVE:Walk,10,Fly,60 FACE:2.5 REACH:0 VISION:Low-light PREALIGN:TN BONUS:CHECKS|BASE.Fortitude,BASE.Reflex|2|PREDEFAULTMONSTER:Y BONUS:COMBAT|AC|2|TYPE=NaturalArmor.REPLACE BONUS:SKILL|Spot|8|TYPE=Racial BONUS:SKILLRANK|Spot|4|PREDEFAULTMONSTER:Y BONUS:STAT|STR|-4 BONUS:STAT|DEX|6 BONUS:STAT|INT|-8 BONUS:STAT|WIS|4 BONUS:STAT|CHA|-4 BONUS:STAT|DEX|1|PREDEFAULTMONSTER:Y MONCSKILL:Listen|Spot MFEAT:Weapon Finesse LEGS:2 BONUS:WEAPONPROF=Talons|DAMAGE|max(0,(STR/2)) NATURALATTACKS:Talons,Weapon.Natural.Melee.Finesseable.Piercing.Slashing,*1,1d4 HITDICE:1,8 MONSTERCLASS:Animal:1 RACETYPE:Animal TYPE:Animal CR:1/3 SOURCEPAGE:MonstersAnimals.rtf
-Horse (Heavy) OUTPUTNAME:Horse, [NAME] STARTFEATS:1 SIZE:L MOVE:Walk,50 FACE:10 REACH:5 VISION:Low-light PREALIGN:TN BONUS:CHECKS|BASE.Fortitude,BASE.Reflex|3|PREDEFAULTMONSTER:Y BONUS:CHECKS|BASE.Will|1|PREDEFAULTMONSTER:Y BONUS:COMBAT|AC|3|TYPE=NaturalArmor.REPLACE BONUS:COMBAT|BAB|2|PREDEFAULTMONSTER:Y BONUS:SKILLRANK|Listen,Spot|3|PREDEFAULTMONSTER:Y BONUS:STAT|STR|6 BONUS:STAT|DEX|2 BONUS:STAT|CON|4 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-4 BONUS:STAT|DEX,CON|1|PREDEFAULTMONSTER:Y MONCSKILL:Listen|Spot MFEAT:Endurance|Run LEGS:4 BONUS:WEAPONPROF=Hoof|DAMAGE|-ceil(STR/2) BONUS:WEAPONPROF=Hoof|TOHIT|-5 NATURALATTACKS:Hoof,Weapon.Natural.Melee.Finesseable.Bludgeoning,*2,1d6 SA:Scent (Ex) HITDICE:3,8 MONSTERCLASS:Animal:3 RACETYPE:Animal TYPE:Animal CR:1 SOURCEPAGE:MonstersAnimals.rtf
-Horse (Light) OUTPUTNAME:Horse, [NAME] STARTFEATS:1 SIZE:L MOVE:Walk,60 FACE:10 REACH:5 VISION:Low-light PREALIGN:TN BONUS:CHECKS|BASE.Fortitude,BASE.Reflex|3|PREDEFAULTMONSTER:Y BONUS:CHECKS|BASE.Will|1|PREDEFAULTMONSTER:Y BONUS:COMBAT|AC|3|TYPE=NaturalArmor.REPLACE BONUS:COMBAT|BAB|2|PREDEFAULTMONSTER:Y BONUS:SKILLRANK|Listen,Spot|3|PREDEFAULTMONSTER:Y BONUS:STAT|STR|4 BONUS:STAT|DEX|2 BONUS:STAT|CON|4 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-4 BONUS:STAT|DEX,CON|1|PREDEFAULTMONSTER:Y MONCSKILL:Listen|Spot MFEAT:Endurance|Run LEGS:4 BONUS:WEAPONPROF=Hoof|DAMAGE|-ceil(STR/2) BONUS:WEAPONPROF=Hoof|TOHIT|-5 NATURALATTACKS:Hoof,Weapon.Natural.Melee.Finesseable.Bludgeoning,*2,1d4 SA:Scent (Ex) HITDICE:3,8 MONSTERCLASS:Animal:3 RACETYPE:Animal TYPE:Animal CR:1 SOURCEPAGE:MonstersAnimals.rtf
-Horse (Warhorse Heavy) OUTPUTNAME:Warhorse, Heavy STARTFEATS:1 SIZE:L MOVE:Walk,50 FACE:10 REACH:5 VISION:Low-light PREALIGN:TN BONUS:CHECKS|BASE.Fortitude,BASE.Reflex|4|PREDEFAULTMONSTER:Y BONUS:CHECKS|BASE.Will|1|PREDEFAULTMONSTER:Y BONUS:COMBAT|AC|4|TYPE=NaturalArmor.REPLACE BONUS:COMBAT|BAB|3|PREDEFAULTMONSTER:Y BONUS:SKILLRANK|Listen|4|PREDEFAULTMONSTER:Y BONUS:SKILLRANK|Spot|3|PREDEFAULTMONSTER:Y BONUS:STAT|STR|8 BONUS:STAT|DEX|2 BONUS:STAT|CON|6 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-4 BONUS:STAT|DEX,CON,WIS|1|PREDEFAULTMONSTER:Y MONCSKILL:Listen|Spot MFEAT:Endurance|Run LEGS:4 HANDS:3 NATURALATTACKS:Hoof,Weapon.Natural.Melee.Finesseable.Bludgeoning,*2,1d6|Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,1d4 SA:Scent (Ex) HITDICE:4,8 MONSTERCLASS:Animal:4 RACETYPE:Animal TYPE:Animal CR:2 SOURCEPAGE:MonstersAnimals.rtf
-Horse (Warhorse Light) OUTPUTNAME:Warhorse, Light STARTFEATS:1 SIZE:L MOVE:Walk,60 FACE:10 REACH:5 VISION:Low-light PREALIGN:TN BONUS:CHECKS|BASE.Fortitude,BASE.Reflex|3|PREDEFAULTMONSTER:Y BONUS:CHECKS|BASE.Will|1|PREDEFAULTMONSTER:Y BONUS:COMBAT|AC|4|TYPE=NaturalArmor.REPLACE BONUS:COMBAT|BAB|2|PREDEFAULTMONSTER:Y BONUS:SKILLRANK|Listen,Spot|3|PREDEFAULTMONSTER:Y BONUS:STAT|STR|6 BONUS:STAT|DEX|2 BONUS:STAT|CON|6 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-4 BONUS:STAT|DEX,CON,WIS|1|PREDEFAULTMONSTER:Y MONCSKILL:Listen|Spot MFEAT:Endurance|Run LEGS:4 HANDS:3 NATURALATTACKS:Hoof,Weapon.Natural.Melee.Finesseable.Bludgeoning,*2,1d4|Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,1d3 SA:Scent (Ex) HITDICE:3,8 MONSTERCLASS:Animal:3 RACETYPE:Animal TYPE:Animal CR:1 SOURCEPAGE:MonstersAnimals.rtf
-Hyena STARTFEATS:1 SIZE:M MOVE:Walk,50 FACE:5 REACH:5 VISION:Low-light PREALIGN:TN BONUS:CHECKS|BASE.Fortitude,BASE.Reflex|3|PREDEFAULTMONSTER:Y BONUS:COMBAT|AC|2|TYPE=NaturalArmor.REPLACE BONUS:COMBAT|BAB|1|PREDEFAULTMONSTER:Y BONUS:SKILLRANK|Hide,Spot|1|PREDEFAULTMONSTER:Y BONUS:SKILLRANK|Listen|3|PREDEFAULTMONSTER:Y BONUS:STAT|STR|4 BONUS:STAT|DEX|4 BONUS:STAT|CON|4 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-4 BONUS:STAT|DEX,CON,WIS|1|PREDEFAULTMONSTER:Y MONCSKILL:Hide|Listen|Spot MFEAT:Alertness LEGS:4 BONUS:WEAPONPROF=Bite|DAMAGE|max(0,(STR/2)) NATURALATTACKS:Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,1d6 SA:Trip (Ex) SA:Scent (Ex) HITDICE:2,8 MONSTERCLASS:Animal:2 RACETYPE:Animal TYPE:Animal HITDICEADVANCEMENT:3,5 CR:1 SOURCEPAGE:MonstersAnimals.rtf
+# Race Name Output Name Starting Feats Size Move Face/Space Reach Vision Required AL Combat bonus Bonus to skill Stat bonus Racial HD Class Skills Nb Legs Nb Hands Weapon prof. bonus Natural Attacks Special Ability MONSTERCLASS Main Race Type Type Hit Dice Advancement CR Source Page
+Hawk STARTFEATS:1 SIZE:T MOVE:Walk,10,Fly,60 FACE:2.5 REACH:0 VISION:Low-light PREALIGN:TN BONUS:COMBAT|AC|2|TYPE=NaturalArmor.REPLACE BONUS:SKILL|Spot|8|TYPE=Racial BONUS:STAT|STR|-4 BONUS:STAT|DEX|6 BONUS:STAT|INT|-8 BONUS:STAT|WIS|4 BONUS:STAT|CHA|-4 MONCSKILL:Listen|Spot LEGS:2 BONUS:WEAPONPROF=Talons|DAMAGE|max(0,(STR/2)) NATURALATTACKS:Talons,Weapon.Natural.Melee.Finesseable.Piercing.Slashing,*1,1d4 MONSTERCLASS:Animal:1 RACETYPE:Animal TYPE:Animal CR:1/3 SOURCEPAGE:MonstersAnimals.rtf
+Horse (Heavy) OUTPUTNAME:Horse, [NAME] STARTFEATS:1 SIZE:L MOVE:Walk,50 FACE:10 REACH:5 VISION:Low-light PREALIGN:TN BONUS:COMBAT|AC|3|TYPE=NaturalArmor.REPLACE BONUS:STAT|STR|6 BONUS:STAT|DEX|2 BONUS:STAT|CON|4 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-4 MONCSKILL:Listen|Spot LEGS:4 BONUS:WEAPONPROF=Hoof|DAMAGE|-ceil(STR/2) BONUS:WEAPONPROF=Hoof|TOHIT|-5 NATURALATTACKS:Hoof,Weapon.Natural.Melee.Finesseable.Bludgeoning,*2,1d6 SA:Scent (Ex) MONSTERCLASS:Animal:3 RACETYPE:Animal TYPE:Animal CR:1 SOURCEPAGE:MonstersAnimals.rtf
+Horse (Light) OUTPUTNAME:Horse, [NAME] STARTFEATS:1 SIZE:L MOVE:Walk,60 FACE:10 REACH:5 VISION:Low-light PREALIGN:TN BONUS:COMBAT|AC|3|TYPE=NaturalArmor.REPLACE BONUS:STAT|STR|4 BONUS:STAT|DEX|2 BONUS:STAT|CON|4 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-4 MONCSKILL:Listen|Spot LEGS:4 BONUS:WEAPONPROF=Hoof|DAMAGE|-ceil(STR/2) BONUS:WEAPONPROF=Hoof|TOHIT|-5 NATURALATTACKS:Hoof,Weapon.Natural.Melee.Finesseable.Bludgeoning,*2,1d4 SA:Scent (Ex) MONSTERCLASS:Animal:3 RACETYPE:Animal TYPE:Animal CR:1 SOURCEPAGE:MonstersAnimals.rtf
+Horse (Warhorse Heavy) OUTPUTNAME:Warhorse, Heavy STARTFEATS:1 SIZE:L MOVE:Walk,50 FACE:10 REACH:5 VISION:Low-light PREALIGN:TN BONUS:COMBAT|AC|4|TYPE=NaturalArmor.REPLACE BONUS:STAT|STR|8 BONUS:STAT|DEX|2 BONUS:STAT|CON|6 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-4 MONCSKILL:Listen|Spot LEGS:4 HANDS:3 NATURALATTACKS:Hoof,Weapon.Natural.Melee.Finesseable.Bludgeoning,*2,1d6|Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,1d4 SA:Scent (Ex) MONSTERCLASS:Animal:4 RACETYPE:Animal TYPE:Animal CR:2 SOURCEPAGE:MonstersAnimals.rtf
+Horse (Warhorse Light) OUTPUTNAME:Warhorse, Light STARTFEATS:1 SIZE:L MOVE:Walk,60 FACE:10 REACH:5 VISION:Low-light PREALIGN:TN BONUS:COMBAT|AC|4|TYPE=NaturalArmor.REPLACE BONUS:STAT|STR|6 BONUS:STAT|DEX|2 BONUS:STAT|CON|6 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-4 MONCSKILL:Listen|Spot LEGS:4 HANDS:3 NATURALATTACKS:Hoof,Weapon.Natural.Melee.Finesseable.Bludgeoning,*2,1d4|Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,1d3 SA:Scent (Ex) MONSTERCLASS:Animal:3 RACETYPE:Animal TYPE:Animal CR:1 SOURCEPAGE:MonstersAnimals.rtf
+Hyena STARTFEATS:1 SIZE:M MOVE:Walk,50 FACE:5 REACH:5 VISION:Low-light PREALIGN:TN BONUS:COMBAT|AC|2|TYPE=NaturalArmor.REPLACE BONUS:STAT|STR|4 BONUS:STAT|DEX|4 BONUS:STAT|CON|4 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-4 MONCSKILL:Hide|Listen|Spot LEGS:4 BONUS:WEAPONPROF=Bite|DAMAGE|max(0,(STR/2)) NATURALATTACKS:Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,1d6 SA:Trip (Ex) SA:Scent (Ex) MONSTERCLASS:Animal:2 RACETYPE:Animal TYPE:Animal HITDICEADVANCEMENT:3,5 CR:1 SOURCEPAGE:MonstersAnimals.rtf
###Block: JKL
-# Race Name Output Name Starting Feats Size Move Face/Space Reach Vision Required AL Save checks bonus Combat bonus Bonus to skill Bonus to skill rank Stat bonus Racial HD Class Skills Default Monster Feat Nb Legs Nb Hands Weapon prof. bonus Natural Attacks Special Ability HITDICE MONSTERCLASS Main Race Type Type Template Hit Dice Advancement CR Source Page
-Leopard STARTFEATS:1 SIZE:M MOVE:Walk,40,Climb,20 FACE:5 REACH:5 VISION:Low-light PREALIGN:TN BONUS:CHECKS|BASE.Fortitude,BASE.Reflex|3|PREDEFAULTMONSTER:Y BONUS:CHECKS|BASE.Will|1|PREDEFAULTMONSTER:Y BONUS:COMBAT|AC|1|TYPE=NaturalArmor.REPLACE BONUS:COMBAT|BAB|2|PREDEFAULTMONSTER:Y BONUS:SKILL|Balance,Jump|8|TYPE=Racial BONUS:SKILL|Hide,Move Silently|4|TYPE=Racial BONUS:SKILLRANK|Listen,Spot|3|PREDEFAULTMONSTER:Y BONUS:STAT|STR|6 BONUS:STAT|DEX|8 BONUS:STAT|CON|4 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-4 BONUS:STAT|DEX,CON|1|PREDEFAULTMONSTER:Y MONCSKILL:Balance|Climb|Hide|Jump|Listen|Move Silently|Spot MFEAT:Alertness|Weapon Finesse LEGS:4 HANDS:3 NATURALATTACKS:Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,1d6|Claw,Weapon.Natural.Melee.Finesseable.Piercing.Slashing,*2,1d3 SA:Improved Grab (Ex) SA:Pounce (Ex) SA:Rake (Ex) SA:Scent (Ex) HITDICE:3,8 MONSTERCLASS:Animal:3 RACETYPE:Animal TYPE:Animal HITDICEADVANCEMENT:5 CR:2 SOURCEPAGE:MonstersAnimals.rtf
-Lion STARTFEATS:1 SIZE:L MOVE:Walk,40 FACE:10 REACH:5 VISION:Low-light PREALIGN:TN BONUS:CHECKS|BASE.Fortitude,BASE.Reflex|4|PREDEFAULTMONSTER:Y BONUS:CHECKS|BASE.Will|1|PREDEFAULTMONSTER:Y BONUS:COMBAT|AC|3|TYPE=NaturalArmor.REPLACE BONUS:COMBAT|BAB|3|PREDEFAULTMONSTER:Y BONUS:SKILL|Balance,Hide,Move Silently|4|TYPE=Racial BONUS:SKILLRANK|Move Silently|4|PREDEFAULTMONSTER:Y BONUS:SKILLRANK|Listen,Spot|2|PREDEFAULTMONSTER:Y BONUS:STAT|STR|10 BONUS:STAT|DEX|6 BONUS:STAT|CON|4 BONUS:STAT|INT|-8 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-4 BONUS:STAT|STR,DEX,CON|1|PREDEFAULTMONSTER:Y MONCSKILL:Balance|Hide|Listen|Move Silently|Spot MFEAT:Alertness|Run LEGS:4 HANDS:3 NATURALATTACKS:Claw,Weapon.Natural.Melee.Finesseable.Piercing.Slashing,*2,1d4|Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,1d8 SA:Pounce (Ex) SA:Improved Grab (Ex) SA:Rake (Ex) SA:Scent (Ex) HITDICE:5,8 MONSTERCLASS:Animal:5 RACETYPE:Animal TYPE:Animal HITDICEADVANCEMENT:8 CR:3 SOURCEPAGE:MonstersAnimals.rtf
-Lizard STARTFEATS:1 SIZE:T MOVE:Walk,20,Climb,20 FACE:2.5 REACH:0 VISION:Low-light PREALIGN:TN BONUS:CHECKS|BASE.Fortitude,BASE.Reflex|2|PREDEFAULTMONSTER:Y BONUS:SKILL|Balance,Climb|8|TYPE=Racial BONUS:SKILL|Climb|DEX-STR BONUS:SKILLRANK|Climb,Listen,Spot|2|PREDEFAULTMONSTER:Y BONUS:STAT|STR|-8 BONUS:STAT|DEX|4 BONUS:STAT|INT|-9 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-8 BONUS:STAT|STR,DEX|1|PREDEFAULTMONSTER:Y MONCSKILL:Balance|Climb|Hide|Listen|Spot MFEAT:Weapon Finesse LEGS:4 BONUS:WEAPONPROF=Bite|DAMAGE|max(0,(STR/2)) NATURALATTACKS:Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,1d4 HITDICE:1,8 MONSTERCLASS:Animal:1 RACETYPE:Animal TYPE:Animal TEMPLATE:Half Hitdie CR:1/6 SOURCEPAGE:MonstersAnimals.rtf
-Lizard (Monitor) OUTPUTNAME:[NAME] Lizard STARTFEATS:1 SIZE:M MOVE:Walk,30,Swim,30 FACE:5 REACH:5 VISION:Low-light PREALIGN:TN BONUS:CHECKS|BASE.Fortitude|5|PREDEFAULTMONSTER:Y BONUS:CHECKS|BASE.Reflex|3|PREDEFAULTMONSTER:Y BONUS:CHECKS|BASE.Will|1|PREDEFAULTMONSTER:Y BONUS:COMBAT|AC|3|TYPE=NaturalArmor.REPLACE BONUS:COMBAT|BAB|2|PREDEFAULTMONSTER:Y BONUS:SKILL|Hide,Move Silently|4|TYPE=Racial BONUS:SKILLRANK|Listen,Spot|1|PREDEFAULTMONSTER:Y BONUS:SKILLRANK|Climb,Hide,Move Silently|4|PREDEFAULTMONSTER:Y BONUS:STAT|STR|6 BONUS:STAT|DEX|4 BONUS:STAT|CON|6 BONUS:STAT|INT|-9 BONUS:STAT|WIS|2 BONUS:STAT|CHA|-8 BONUS:STAT|STR,DEX,CON|1|PREDEFAULTMONSTER:Y MONCSKILL:Climb|Hide|Listen|Move Silently|Spot|Swim MFEAT:Alertness|Great Fortitude LEGS:4 BONUS:WEAPONPROF=Bite|DAMAGE|max(0,(STR/2)) NATURALATTACKS:Bite,Weapon.Natural.Melee.Finesseable.Bludgeoning.Piercing.Slashing,*1,1d8 HITDICE:3,8 MONSTERCLASS:Animal:3 RACETYPE:Animal TYPE:Animal HITDICEADVANCEMENT:5 CR:2 SOURCEPAGE:MonstersAnimals.rtf
+# Race Name Output Name Starting Feats Size Move Face/Space Reach Vision Required AL Combat bonus Bonus to skill Stat bonus Racial HD Class Skills Nb Legs Nb Hands Weapon prof. bonus Natural Attacks Special Ability MONSTERCLASS Main Race Type Type Template Hit Dice Advancement CR Source Page
+Leopard STARTFEATS:1 SIZE:M MOVE:Walk,40,Climb,20 FACE:5 REACH:5 VISION:Low-light PREALIGN:TN BONUS:COMBAT|AC|1|TYPE=NaturalArmor.REPLACE BONUS:SKILL|Balance,Jump|8|TYPE=Racial BONUS:SKILL|Hide,Move Silently|4|TYPE=Racial BONUS:STAT|STR|6 BONUS:STAT|DEX|8 BO...
[truncated message content] |
|
From: <tir...@us...> - 2007-09-30 18:02:02
|
Revision: 4191
http://pcgen.svn.sourceforge.net/pcgen/?rev=4191&view=rev
Author: tir-gwaith
Date: 2007-09-30 11:02:02 -0700 (Sun, 30 Sep 2007)
Log Message:
-----------
add PLURAL to fighter feats. Couple more tests, and I think Fighter Feats pool will make next Alpha release.
Modified Paths:
--------------
Trunk/pcgen/system/gameModes/35e/miscinfo.lst
Modified: Trunk/pcgen/system/gameModes/35e/miscinfo.lst
===================================================================
--- Trunk/pcgen/system/gameModes/35e/miscinfo.lst 2007-09-30 18:00:39 UTC (rev 4190)
+++ Trunk/pcgen/system/gameModes/35e/miscinfo.lst 2007-09-30 18:02:02 UTC (rev 4191)
@@ -266,10 +266,9 @@
# Ability Categories
#
ABILITYCATEGORY:Salient Divine Ability VISIBLE:YES EDITABLE:YES EDITPOOL:NO FRACTIONALPOOL:NO POOL:SalientDivinePool CATEGORY:Salient Divine Ability PLURAL:Salient Divine Abilities
-ABILITYCATEGORY:Fighter Feat VISIBLE:YES EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO CATEGORY:FEAT TYPE:Fighter DISPLAYLOCATION:Feats
+ABILITYCATEGORY:Fighter Feat VISIBLE:YES EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO CATEGORY:FEAT TYPE:Fighter PLURAL:Fighter Feats DISPLAYLOCATION:Feats
-
PREVIEWDIR:d20/fantasy
PREVIEWSHEET:preview.html
#
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tir...@us...> - 2007-09-30 18:00:36
|
Revision: 4190
http://pcgen.svn.sourceforge.net/pcgen/?rev=4190&view=rev
Author: tir-gwaith
Date: 2007-09-30 11:00:39 -0700 (Sun, 30 Sep 2007)
Log Message:
-----------
Removing my personal stuff, that helped with my testing...
REALLY want a way to set up ABILITYCATEGORYs from _other_ than GameMode.
Modified Paths:
--------------
Trunk/pcgen/system/gameModes/35e/miscinfo.lst
Modified: Trunk/pcgen/system/gameModes/35e/miscinfo.lst
===================================================================
--- Trunk/pcgen/system/gameModes/35e/miscinfo.lst 2007-09-30 17:59:15 UTC (rev 4189)
+++ Trunk/pcgen/system/gameModes/35e/miscinfo.lst 2007-09-30 18:00:39 UTC (rev 4190)
@@ -268,10 +268,6 @@
ABILITYCATEGORY:Salient Divine Ability VISIBLE:YES EDITABLE:YES EDITPOOL:NO FRACTIONALPOOL:NO POOL:SalientDivinePool CATEGORY:Salient Divine Ability PLURAL:Salient Divine Abilities
ABILITYCATEGORY:Fighter Feat VISIBLE:YES EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO CATEGORY:FEAT TYPE:Fighter DISPLAYLOCATION:Feats
-###Block: Stuff for Tir's homebrews
-ABILITYCATEGORY:Breath Effect VISIBLE:YES EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO CATEGORY:Breath Effect PLURAL:Breath Effects
-ABILITYCATEGORY:Draconic Invocation VISIBLE:YES EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO CATEGORY:Invocation TYPE:Draconic PLURAL:Draconic Invocations DISPLAYLOCATION:Invocations
-ABILITYCATEGORY:Warlock Invocation VISIBLE:YES EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO CATEGORY:Invocation TYPE:Warlock PLURAL:Warlock Invocations DISPLAYLOCATION:Invocations
PREVIEWDIR:d20/fantasy
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tir...@us...> - 2007-09-30 17:59:11
|
Revision: 4189
http://pcgen.svn.sourceforge.net/pcgen/?rev=4189&view=rev
Author: tir-gwaith
Date: 2007-09-30 10:59:15 -0700 (Sun, 30 Sep 2007)
Log Message:
-----------
Dang typo made it in again. Fixing that, and deleting my INI, and Fighter Feats look like they are working as supposed to. committing this.
Modified Paths:
--------------
Trunk/pcgen/system/gameModes/35e/miscinfo.lst
Modified: Trunk/pcgen/system/gameModes/35e/miscinfo.lst
===================================================================
--- Trunk/pcgen/system/gameModes/35e/miscinfo.lst 2007-09-30 13:22:59 UTC (rev 4188)
+++ Trunk/pcgen/system/gameModes/35e/miscinfo.lst 2007-09-30 17:59:15 UTC (rev 4189)
@@ -266,8 +266,14 @@
# Ability Categories
#
ABILITYCATEGORY:Salient Divine Ability VISIBLE:YES EDITABLE:YES EDITPOOL:NO FRACTIONALPOOL:NO POOL:SalientDivinePool CATEGORY:Salient Divine Ability PLURAL:Salient Divine Abilities
-ABILITYCATEGORY:Fighter Feat VISIBLE:YES EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO CATEGORY:FEAT TYPE:Figther DISPLAYLOCATION:Feats
+ABILITYCATEGORY:Fighter Feat VISIBLE:YES EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO CATEGORY:FEAT TYPE:Fighter DISPLAYLOCATION:Feats
+###Block: Stuff for Tir's homebrews
+ABILITYCATEGORY:Breath Effect VISIBLE:YES EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO CATEGORY:Breath Effect PLURAL:Breath Effects
+ABILITYCATEGORY:Draconic Invocation VISIBLE:YES EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO CATEGORY:Invocation TYPE:Draconic PLURAL:Draconic Invocations DISPLAYLOCATION:Invocations
+ABILITYCATEGORY:Warlock Invocation VISIBLE:YES EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO CATEGORY:Invocation TYPE:Warlock PLURAL:Warlock Invocations DISPLAYLOCATION:Invocations
+
+
PREVIEWDIR:d20/fantasy
PREVIEWSHEET:preview.html
#
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tir...@us...> - 2007-09-30 13:22:59
|
Revision: 4188
http://pcgen.svn.sourceforge.net/pcgen/?rev=4188&view=rev
Author: tir-gwaith
Date: 2007-09-30 06:22:59 -0700 (Sun, 30 Sep 2007)
Log Message:
-----------
ABILITYCATEGORY lines:
Put tags in agreed upon order.
Added Fighter Feat line (just definition for now, to help with code issues.)
Modified Paths:
--------------
Trunk/pcgen/system/gameModes/35e/miscinfo.lst
Modified: Trunk/pcgen/system/gameModes/35e/miscinfo.lst
===================================================================
--- Trunk/pcgen/system/gameModes/35e/miscinfo.lst 2007-09-30 00:01:35 UTC (rev 4187)
+++ Trunk/pcgen/system/gameModes/35e/miscinfo.lst 2007-09-30 13:22:59 UTC (rev 4188)
@@ -265,7 +265,8 @@
#
# Ability Categories
#
-ABILITYCATEGORY:Salient Divine Ability CATEGORY:Salient Divine Ability PLURAL:Salient Divine Abilities EDITABLE:YES EDITPOOL:NO FRACTIONALPOOL:NO POOL:SalientDivinePool VISIBLE:YES
+ABILITYCATEGORY:Salient Divine Ability VISIBLE:YES EDITABLE:YES EDITPOOL:NO FRACTIONALPOOL:NO POOL:SalientDivinePool CATEGORY:Salient Divine Ability PLURAL:Salient Divine Abilities
+ABILITYCATEGORY:Fighter Feat VISIBLE:YES EDITABLE:YES EDITPOOL:YES FRACTIONALPOOL:NO CATEGORY:FEAT TYPE:Figther DISPLAYLOCATION:Feats
PREVIEWDIR:d20/fantasy
PREVIEWSHEET:preview.html
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <tir...@us...> - 2007-09-30 00:01:33
|
Revision: 4187
http://pcgen.svn.sourceforge.net/pcgen/?rev=4187&view=rev
Author: tir-gwaith
Date: 2007-09-29 17:01:35 -0700 (Sat, 29 Sep 2007)
Log Message:
-----------
Transparent Half-Dragon Breath weapon improvement for abilities that can increase the number of times per day.
Modified Paths:
--------------
Trunk/pcgen/data/d20ogl/srd35/monsters/rsrd_templates.lst
Modified: Trunk/pcgen/data/d20ogl/srd35/monsters/rsrd_templates.lst
===================================================================
--- Trunk/pcgen/data/d20ogl/srd35/monsters/rsrd_templates.lst 2007-09-29 22:03:55 UTC (rev 4186)
+++ Trunk/pcgen/data/d20ogl/srd35/monsters/rsrd_templates.lst 2007-09-30 00:01:35 UTC (rev 4187)
@@ -27,17 +27,17 @@
###Block: Half Dragons
# Template Name Hit Dice Size CR Visible Level Adjustment Template Source Page Special Ability Define Required AL Minimum Size Combat bonus BONUS:MONSKILLPTS Stat bonus Modify VAR MOVECLONE Main Race Type Vision
-Half Dragon HITDIE:%up1|CLASS.TYPE=Monster CR:2 VISIBLE:NO LEVELADJUSTMENT:3 TEMPLATE:CHOOSE:Half Dragon Wings TEMPLATE:CHOOSE:Bite ~ Claw (Fine)|Bite ~ Claw (Diminutive)|Bite ~ Claw (Tiny)|Bite ~ Claw (Small)|Bite ~ Claw (Medium)|Bite ~ Claw (Large)|Bite ~ Claw (Huge)|Bite ~ Claw (Gargantuan)|Bite ~ Claw (Colossal) SOURCEPAGE:MonstersG-H.rtf DEFINE:HalfDragonBreathDC|0 BONUS:COMBAT|AC|4|TYPE=NaturalArmor.REPLACE BONUS:MONSKILLPTS|LOCKNUMBER|6 BONUS:STAT|STR|8 BONUS:STAT|CON,INT,CHA|2 BONUS:VAR|HalfDragonBreathDC|10+(HD/2)+CON RACETYPE:Dragon VISION:Darkvision (60')|Low-light
-Half Dragon (Black) VISIBLE:YES TEMPLATE:Half Dragon SOURCEPAGE:MonstersG-H.rtf SA:Immunity to Acid (Ex) SA:Breath Weapon (Ex) 60' Line of Acid 1/day 6d8 (DC%)|HalfDragonBreathDC PREALIGN:CE
-Half Dragon (Blue) VISIBLE:YES TEMPLATE:Half Dragon SOURCEPAGE:MonstersG-H.rtf SA:Immunity to Electricity (Ex) SA:Breath Weapon (Ex) 60' Line of Electricity 1/day 6d8 (DC%)|HalfDragonBreathDC PREALIGN:LE
-Half Dragon (Green) VISIBLE:YES TEMPLATE:Half Dragon SOURCEPAGE:MonstersG-H.rtf SA:Immunity to Acid (Ex) SA:Breath Weapon (Ex) 30' Cone of Acid 1/day 6d8 (DC%)|HalfDragonBreathDC PREALIGN:LE
-Half Dragon (Red) VISIBLE:YES TEMPLATE:Half Dragon SOURCEPAGE:MonstersG-H.rtf SA:Immunity to Fire (Ex) SA:Breath Weapon (Ex) 30' Cone of Fire 1/day 6d8 (DC%)|HalfDragonBreathDC PREALIGN:CE
-Half Dragon (White) VISIBLE:YES TEMPLATE:Half Dragon SOURCEPAGE:MonstersG-H.rtf SA:Immunity to Cold (Ex) SA:Breath Weapon (Ex) 30' Cone of Cold 1/day 6d8 (DC%)|HalfDragonBreathDC PREALIGN:CE
-Half Dragon (Brass) VISIBLE:YES TEMPLATE:Half Dragon SOURCEPAGE:MonstersG-H.rtf SA:Immunity to Fire (Ex) SA:Breath Weapon (Ex) 60' Line of Fire 1/day 6d8 (DC%)|HalfDragonBreathDC PREALIGN:CG
-Half Dragon (Bronze) VISIBLE:YES TEMPLATE:Half Dragon SOURCEPAGE:MonstersG-H.rtf SA:Immunity to Electricity (Ex) SA:Breath Weapon (60' Line of Electricity 1/day 6d8 DC%) (Ex)|HalfDragonBreathDC PREALIGN:LG
-Half Dragon (Copper) VISIBLE:YES TEMPLATE:Half Dragon SOURCEPAGE:MonstersG-H.rtf SA:Immunity to Acid (Ex) SA:Breath Weapon (Ex) 60' Line of Acid 1/day 6d8 (DC%)|HalfDragonBreathDC PREALIGN:CG
-Half Dragon (Gold) VISIBLE:YES TEMPLATE:Half Dragon SOURCEPAGE:MonstersG-H.rtf SA:Immunity to Fire (Ex) SA:Breath Weapon (Ex) 30' Cone of Fire 1/day 6d8 (DC%)|HalfDragonBreathDC PREALIGN:LG
-Half Dragon (Silver) VISIBLE:YES TEMPLATE:Half Dragon SOURCEPAGE:MonstersG-H.rtf SA:Immunity to Cold (Ex) SA:Breath Weapon (Ex) 30' Cone of Cold 1/day 6d8 (DC%)|HalfDragonBreathDC PREALIGN:LG
+Half Dragon HITDIE:%up1|CLASS.TYPE=Monster CR:2 VISIBLE:NO LEVELADJUSTMENT:3 TEMPLATE:CHOOSE:Half Dragon Wings TEMPLATE:CHOOSE:Bite ~ Claw (Fine)|Bite ~ Claw (Diminutive)|Bite ~ Claw (Tiny)|Bite ~ Claw (Small)|Bite ~ Claw (Medium)|Bite ~ Claw (Large)|Bite ~ Claw (Huge)|Bite ~ Claw (Gargantuan)|Bite ~ Claw (Colossal) SOURCEPAGE:MonstersG-H.rtf DEFINE:HalfDragonBreathTimes|1 DEFINE:HalfDragonBreathDC|0 BONUS:COMBAT|AC|4|TYPE=NaturalArmor.REPLACE BONUS:MONSKILLPTS|LOCKNUMBER|6 BONUS:STAT|STR|8 BONUS:STAT|CON,INT,CHA|2 BONUS:VAR|HalfDragonBreathDC|10+(HD/2)+CON RACETYPE:Dragon VISION:Darkvision (60')|Low-light
+Half Dragon (Black) VISIBLE:YES TEMPLATE:Half Dragon SOURCEPAGE:MonstersG-H.rtf SA:Immunity to Acid (Ex) SA:Breath Weapon (Ex) 60' Line of Acid %/day 6d8 (DC%)|HalfDragonBreathTimes|HalfDragonBreathDC PREALIGN:CE
+Half Dragon (Blue) VISIBLE:YES TEMPLATE:Half Dragon SOURCEPAGE:MonstersG-H.rtf SA:Immunity to Electricity (Ex) SA:Breath Weapon (Ex) 60' Line of Electricity %/day 6d8 (DC%)|HalfDragonBreathTimes|HalfDragonBreathDC PREALIGN:LE
+Half Dragon (Green) VISIBLE:YES TEMPLATE:Half Dragon SOURCEPAGE:MonstersG-H.rtf SA:Immunity to Acid (Ex) SA:Breath Weapon (Ex) 30' Cone of Acid %/day 6d8 (DC%)|HalfDragonBreathTimes|HalfDragonBreathDC PREALIGN:LE
+Half Dragon (Red) VISIBLE:YES TEMPLATE:Half Dragon SOURCEPAGE:MonstersG-H.rtf SA:Immunity to Fire (Ex) SA:Breath Weapon (Ex) 30' Cone of Fire %/day 6d8 (DC%)|HalfDragonBreathTimes|HalfDragonBreathDC PREALIGN:CE
+Half Dragon (White) VISIBLE:YES TEMPLATE:Half Dragon SOURCEPAGE:MonstersG-H.rtf SA:Immunity to Cold (Ex) SA:Breath Weapon (Ex) 30' Cone of Cold %/day 6d8 (DC%)|HalfDragonBreathTimes|HalfDragonBreathDC PREALIGN:CE
+Half Dragon (Brass) VISIBLE:YES TEMPLATE:Half Dragon SOURCEPAGE:MonstersG-H.rtf SA:Immunity to Fire (Ex) SA:Breath Weapon (Ex) 60' Line of Fire %/day 6d8 (DC%)|HalfDragonBreathTimes|HalfDragonBreathDC PREALIGN:CG
+Half Dragon (Bronze) VISIBLE:YES TEMPLATE:Half Dragon SOURCEPAGE:MonstersG-H.rtf SA:Immunity to Electricity (Ex) SA:Breath Weapon (60' Line of Electricity %/day 6d8 DC%) (Ex)|HalfDragonBreathTimes|HalfDragonBreathDC PREALIGN:LG
+Half Dragon (Copper) VISIBLE:YES TEMPLATE:Half Dragon SOURCEPAGE:MonstersG-H.rtf SA:Immunity to Acid (Ex) SA:Breath Weapon (Ex) 60' Line of Acid %/day 6d8 (DC%)|HalfDragonBreathTimes|HalfDragonBreathDC PREALIGN:CG
+Half Dragon (Gold) VISIBLE:YES TEMPLATE:Half Dragon SOURCEPAGE:MonstersG-H.rtf SA:Immunity to Fire (Ex) SA:Breath Weapon (Ex) 30' Cone of Fire %/day 6d8 (DC%)|HalfDragonBreathTimes|HalfDragonBreathDC PREALIGN:LG
+Half Dragon (Silver) VISIBLE:YES TEMPLATE:Half Dragon SOURCEPAGE:MonstersG-H.rtf SA:Immunity to Cold (Ex) SA:Breath Weapon (Ex) 30' Cone of Cold %/day 6d8 (DC%)|HalfDragonBreathTimes|HalfDragonBreathDC PREALIGN:LG
# TODO: Movement issue: This template should grant a fly speed of double Walk speed but not greater than 120, as of 5.7.12 the MOVECLONE tag cannot do this as it will only accept integers not variables or formulas. there is a code FReq to get this changed - [ 1090486 ] MOVECLONE to accept JEP formulas, once completed this template can be revised
Half Dragon Wings VISIBLE:NO SA:Half-Dragon Wings PRESIZEGTEQ:L MOVECLONE:Walk,Fly,*2
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <th...@us...> - 2007-09-29 22:03:52
|
Revision: 4186
http://pcgen.svn.sourceforge.net/pcgen/?rev=4186&view=rev
Author: thpr
Date: 2007-09-29 15:03:55 -0700 (Sat, 29 Sep 2007)
Log Message:
-----------
Additional Base Tests & 1 fix
Modified Paths:
--------------
branches/cdom/code/src/java/pcgen/base/util/DoubleKeyMap.java
branches/cdom/code/src/utest/pcgen/base/formula/AddingFormulaTest.java
branches/cdom/code/src/utest/pcgen/base/formula/DividingFormulaTest.java
branches/cdom/code/src/utest/pcgen/base/formula/MultiplyingFormulaTest.java
branches/cdom/code/src/utest/pcgen/base/formula/SubtractingFormulaTest.java
branches/cdom/code/src/utest/pcgen/base/graph/visitor/DirectedNodeWeightCalculationTest.java
branches/cdom/code/src/utest/pcgen/base/util/BaseUtilTestSuite.java
branches/cdom/code/src/utest/pcgen/base/util/DoubleKeyMapTest.java
Added Paths:
-----------
branches/cdom/code/src/utest/pcgen/base/util/CaseInsensitiveMapTest.java
branches/cdom/code/src/utest/pcgen/base/util/TreeMapToListTest.java
Modified: branches/cdom/code/src/java/pcgen/base/util/DoubleKeyMap.java
===================================================================
--- branches/cdom/code/src/java/pcgen/base/util/DoubleKeyMap.java 2007-09-29 18:39:56 UTC (rev 4185)
+++ branches/cdom/code/src/java/pcgen/base/util/DoubleKeyMap.java 2007-09-29 22:03:55 UTC (rev 4186)
@@ -86,6 +86,7 @@
*/
public DoubleKeyMap(final DoubleKeyMap<K1, K2, V> otherMap)
{
+ this();
putAll(otherMap);
}
Modified: branches/cdom/code/src/utest/pcgen/base/formula/AddingFormulaTest.java
===================================================================
--- branches/cdom/code/src/utest/pcgen/base/formula/AddingFormulaTest.java 2007-09-29 18:39:56 UTC (rev 4185)
+++ branches/cdom/code/src/utest/pcgen/base/formula/AddingFormulaTest.java 2007-09-29 22:03:55 UTC (rev 4186)
@@ -13,6 +13,22 @@
testBrokenCalls(f);
}
+ public void testEquality()
+ {
+ AddingFormula f1 = new AddingFormula(1);
+ AddingFormula f2 = new AddingFormula(1);
+ AddingFormula f3 = new AddingFormula(2);
+ AddingFormula f4 = new AddingFormula(-1);
+ assertTrue(f1 != f2);
+ assertEquals(f1.hashCode(), f2.hashCode());
+ assertEquals(f1, f2);
+ assertFalse(f1.equals(null));
+ assertFalse(f1.hashCode() == f3.hashCode());
+ assertFalse(f1.equals(f3));
+ assertFalse(f1.hashCode() == f4.hashCode());
+ assertFalse(f1.equals(f4));
+ }
+
public void testPositive()
{
AddingFormula f = new AddingFormula(3);
Modified: branches/cdom/code/src/utest/pcgen/base/formula/DividingFormulaTest.java
===================================================================
--- branches/cdom/code/src/utest/pcgen/base/formula/DividingFormulaTest.java 2007-09-29 18:39:56 UTC (rev 4185)
+++ branches/cdom/code/src/utest/pcgen/base/formula/DividingFormulaTest.java 2007-09-29 22:03:55 UTC (rev 4186)
@@ -13,6 +13,22 @@
testBrokenCalls(f);
}
+ public void testEquality()
+ {
+ DividingFormula f1 = new DividingFormula(1);
+ DividingFormula f2 = new DividingFormula(1);
+ DividingFormula f3 = new DividingFormula(2);
+ DividingFormula f4 = new DividingFormula(-1);
+ assertTrue(f1 != f2);
+ assertEquals(f1.hashCode(), f2.hashCode());
+ assertEquals(f1, f2);
+ assertFalse(f1.equals(null));
+ assertFalse(f1.hashCode() == f3.hashCode());
+ assertFalse(f1.equals(f3));
+ assertFalse(f1.hashCode() == f4.hashCode());
+ assertFalse(f1.equals(f4));
+ }
+
public void testPositive()
{
DividingFormula f = new DividingFormula(3);
Modified: branches/cdom/code/src/utest/pcgen/base/formula/MultiplyingFormulaTest.java
===================================================================
--- branches/cdom/code/src/utest/pcgen/base/formula/MultiplyingFormulaTest.java 2007-09-29 18:39:56 UTC (rev 4185)
+++ branches/cdom/code/src/utest/pcgen/base/formula/MultiplyingFormulaTest.java 2007-09-29 22:03:55 UTC (rev 4186)
@@ -13,6 +13,22 @@
testBrokenCalls(f);
}
+ public void testEquality()
+ {
+ MultiplyingFormula f1 = new MultiplyingFormula(1);
+ MultiplyingFormula f2 = new MultiplyingFormula(1);
+ MultiplyingFormula f3 = new MultiplyingFormula(2);
+ MultiplyingFormula f4 = new MultiplyingFormula(-1);
+ assertTrue(f1 != f2);
+ assertEquals(f1.hashCode(), f2.hashCode());
+ assertEquals(f1, f2);
+ assertFalse(f1.equals(null));
+ assertFalse(f1.hashCode() == f3.hashCode());
+ assertFalse(f1.equals(f3));
+ assertFalse(f1.hashCode() == f4.hashCode());
+ assertFalse(f1.equals(f4));
+ }
+
public void testPositive()
{
MultiplyingFormula f = new MultiplyingFormula(3);
Modified: branches/cdom/code/src/utest/pcgen/base/formula/SubtractingFormulaTest.java
===================================================================
--- branches/cdom/code/src/utest/pcgen/base/formula/SubtractingFormulaTest.java 2007-09-29 18:39:56 UTC (rev 4185)
+++ branches/cdom/code/src/utest/pcgen/base/formula/SubtractingFormulaTest.java 2007-09-29 22:03:55 UTC (rev 4186)
@@ -15,6 +15,22 @@
testBrokenCalls(f);
}
+ public void testEquality()
+ {
+ SubtractingFormula f1 = new SubtractingFormula(1);
+ SubtractingFormula f2 = new SubtractingFormula(1);
+ SubtractingFormula f3 = new SubtractingFormula(2);
+ SubtractingFormula f4 = new SubtractingFormula(-1);
+ assertTrue(f1 != f2);
+ assertEquals(f1.hashCode(), f2.hashCode());
+ assertEquals(f1, f2);
+ assertFalse(f1.equals(null));
+ assertFalse(f1.hashCode() == f3.hashCode());
+ assertFalse(f1.equals(f3));
+ assertFalse(f1.hashCode() == f4.hashCode());
+ assertFalse(f1.equals(f4));
+ }
+
public void testPositive()
{
SubtractingFormula f = new SubtractingFormula(3);
Modified: branches/cdom/code/src/utest/pcgen/base/graph/visitor/DirectedNodeWeightCalculationTest.java
===================================================================
--- branches/cdom/code/src/utest/pcgen/base/graph/visitor/DirectedNodeWeightCalculationTest.java 2007-09-29 18:39:56 UTC (rev 4185)
+++ branches/cdom/code/src/utest/pcgen/base/graph/visitor/DirectedNodeWeightCalculationTest.java 2007-09-29 22:03:55 UTC (rev 4186)
@@ -38,7 +38,8 @@
DirectionalGraph g = new DirectionalListMapGraph();
- TestDirectionalHyperEdge edge1, edge2, edge3, edge4, edge5, edge6, edge7;
+ TestDirectionalHyperEdge edge1, edge2, edge3, edge4, edge5, edge6, edge7,
+ edge8;
Integer node1, node2, node3, node4, node5, node6, node7, node8, node9,
nodea, nodeb, nodec;
@@ -81,6 +82,7 @@
edge5 = new TestDirectionalHyperEdge(node6, new Integer[]{});
edge6 = new TestDirectionalHyperEdge(node4, new Integer[]{node6});
edge7 = new TestDirectionalHyperEdge(node6, new Integer[]{node6});
+ edge8 = new TestDirectionalHyperEdge(node8, new Integer[]{node6});
dedge1 = new TestDirectionalEdge(node1, node2);
dedge2 = new TestDirectionalEdge(node4, node5);
dedge3 = new TestDirectionalEdge(node1, node3);
@@ -170,7 +172,7 @@
}
}
- public void testNullNodes()
+ public void testNullNode()
{
try
{
@@ -183,17 +185,107 @@
}
}
- public void testMissingNodes()
+ public void testNullEdge()
{
+ try
+ {
+ d.calculateEdgeWeight(null);
+ fail();
+ }
+ catch (IllegalArgumentException e)
+ {
+ // OK
+ }
+ }
+
+ public void testOneNodeCall()
+ {
+ d.calculateNodeWeight(node3);
+ try
+ {
+ d.calculateNodeWeight(node1);
+ fail();
+ }
+ catch (UnsupportedOperationException e)
+ {
+ //OK
+ }
+ try
+ {
+ d.calculateEdgeWeight(dedge3);
+ fail();
+ }
+ catch (UnsupportedOperationException e)
+ {
+ //OK
+ }
+ }
+
+ public void testClear()
+ {
+ d.calculateNodeWeight(node3);
+ try
+ {
+ d.calculateNodeWeight(node1);
+ fail();
+ }
+ catch (UnsupportedOperationException e)
+ {
+ //OK
+ }
+ d.clear();
+ d.calculateEdgeWeight(dedge3);
+ }
+
+ public void testOneEdgeCall()
+ {
+ d.calculateEdgeWeight(dedge6);
+ try
+ {
+ d.calculateNodeWeight(node1);
+ fail();
+ }
+ catch (UnsupportedOperationException e)
+ {
+ //OK
+ }
+ try
+ {
+ d.calculateEdgeWeight(dedge3);
+ fail();
+ }
+ catch (UnsupportedOperationException e)
+ {
+ //OK
+ }
+ }
+
+ public void testMissingNode()
+ {
assertEquals(-1, d.calculateNodeWeight(node8));
}
- public void testSimpleDistance()
+ public void testMissingEdge()
{
+ assertEquals(-1, d.calculateEdgeWeight(edge8));
+ }
+
+ public void testSimpleEdgeDistance()
+ {
+ assertEquals(1, d.calculateEdgeWeight(dedge3));
+ }
+
+ public void testComplexEdgeDistance()
+ {
+ assertEquals(3, d.calculateEdgeWeight(dedge6));
+ }
+
+ public void testSimpleNodeDistance()
+ {
assertEquals(1, d.calculateNodeWeight(node1));
}
- public void testComplexDistance()
+ public void testComplexNodeDistance()
{
assertEquals(3, d.calculateNodeWeight(node3));
}
Modified: branches/cdom/code/src/utest/pcgen/base/util/BaseUtilTestSuite.java
===================================================================
--- branches/cdom/code/src/utest/pcgen/base/util/BaseUtilTestSuite.java 2007-09-29 18:39:56 UTC (rev 4185)
+++ branches/cdom/code/src/utest/pcgen/base/util/BaseUtilTestSuite.java 2007-09-29 22:03:55 UTC (rev 4186)
@@ -23,10 +23,11 @@
import junit.framework.TestSuite;
@RunWith(Suite.class)
-@Suite.SuiteClasses({DefaultMapTest.class, DoubleKeyMapTest.class,
- DoubleKeyMapToInstanceListTest.class, DoubleKeyMapToListTest.class,
- HashMapToListTest.class, HashMapToInstanceListTest.class,
- ListSetTest.class, MapCollectionTest.class, TripleKeyMapTest.class,
+@Suite.SuiteClasses({CaseInsensitiveMapTest.class, DefaultMapTest.class,
+ DoubleKeyMapTest.class, DoubleKeyMapToInstanceListTest.class,
+ DoubleKeyMapToListTest.class, HashMapToListTest.class,
+ HashMapToInstanceListTest.class, ListSetTest.class,
+ MapCollectionTest.class, TreeMapToListTest.class, TripleKeyMapTest.class,
TypeSafeMapTest.class, WeightedCollectionTest.class})
public class BaseUtilTestSuite extends TestSuite
{
Added: branches/cdom/code/src/utest/pcgen/base/util/CaseInsensitiveMapTest.java
===================================================================
--- branches/cdom/code/src/utest/pcgen/base/util/CaseInsensitiveMapTest.java (rev 0)
+++ branches/cdom/code/src/utest/pcgen/base/util/CaseInsensitiveMapTest.java 2007-09-29 22:03:55 UTC (rev 4186)
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2007 Tom Parker <th...@us...>
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+package pcgen.base.util;
+
+import junit.framework.TestCase;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class CaseInsensitiveMapTest extends TestCase
+{
+
+ CaseInsensitiveMap<Double> cim;
+
+ @Override
+ @Before
+ public void setUp()
+ {
+ cim = new CaseInsensitiveMap<Double>();
+ }
+
+ public void populate()
+ {
+ cim.put(Integer.valueOf(0), Double.valueOf(0));
+ cim.put("ONE", Double.valueOf(1));
+ cim.put("tWo", Double.valueOf(0));
+ cim.put("This is Three!", Double.valueOf(1));
+ cim.put("null result", null);
+ cim.put(null, Double.valueOf(-1));
+ }
+
+ @Test
+ public void testPutGetExact()
+ {
+ populate();
+ assertEquals(Double.valueOf(0), cim.get(Integer.valueOf(0)));
+ assertEquals(Double.valueOf(1), cim.get("ONE"));
+ assertEquals(Double.valueOf(0), cim.get("tWo"));
+ assertEquals(Double.valueOf(1), cim.get("This is Three!"));
+ assertNull(cim.get("null result"));
+ assertEquals(Double.valueOf(-1), cim.get(null));
+ }
+
+ @Test
+ public void testPutGetDiffCase()
+ {
+ populate();
+ assertEquals(Double.valueOf(0), cim.get(Integer.valueOf(0)));
+ assertEquals(Double.valueOf(1), cim.get("one"));
+ assertEquals(Double.valueOf(0), cim.get("TWO"));
+ assertEquals(Double.valueOf(1), cim.get("This is three!"));
+ assertNull(cim.get("NULL RESULT"));
+ assertEquals(Double.valueOf(-1), cim.get(null));
+ }
+
+ @Test
+ public void testContainsKey()
+ {
+ populate();
+ assertTrue(cim.containsKey(Integer.valueOf(0)));
+ assertTrue(cim.containsKey("one"));
+ assertTrue(cim.containsKey("TWO"));
+ assertTrue(cim.containsKey("This is three!"));
+ assertTrue(cim.containsKey("NULL RESULT"));
+ assertTrue(cim.containsKey(null));
+ }
+
+ @Test
+ public void testRemove()
+ {
+ populate();
+ assertEquals(Double.valueOf(0), cim.get(Integer.valueOf(0)));
+ assertEquals(Double.valueOf(1), cim.get("OnE"));
+ assertEquals(Double.valueOf(0), cim.get("two"));
+ assertEquals(Double.valueOf(1), cim.get("This IS three!"));
+ assertNull(cim.get("NULL result"));
+ assertEquals(Double.valueOf(-1), cim.get(null));
+
+ assertEquals(Double.valueOf(0), cim.remove(Integer.valueOf(0)));
+ assertEquals(Double.valueOf(1), cim.remove("one"));
+ assertEquals(Double.valueOf(0), cim.remove("TWO"));
+ assertEquals(Double.valueOf(1), cim.remove("This is three!"));
+ assertNull(cim.remove("NULL RESULT"));
+ assertEquals(Double.valueOf(-1), cim.remove(null));
+
+ assertNull(cim.get(Integer.valueOf(0)));
+ assertNull(cim.get("one"));
+ assertNull(cim.get("TWO"));
+ assertNull(cim.get("This is three!"));
+ assertNull(cim.get("NULL RESULT"));
+ assertNull(cim.get(null));
+ }
+}
Modified: branches/cdom/code/src/utest/pcgen/base/util/DoubleKeyMapTest.java
===================================================================
--- branches/cdom/code/src/utest/pcgen/base/util/DoubleKeyMapTest.java 2007-09-29 18:39:56 UTC (rev 4185)
+++ branches/cdom/code/src/utest/pcgen/base/util/DoubleKeyMapTest.java 2007-09-29 22:03:55 UTC (rev 4186)
@@ -34,6 +34,7 @@
private static final char CONST_A = 'A';
DoubleKeyMap<Integer, Double, Character> dkm;
+ @Override
@Before
public void setUp()
{
@@ -57,12 +58,17 @@
{
assertNull(dkm.get(Integer.valueOf(1), Double.valueOf(0)));
populate();
- assertEquals(Character.valueOf('A'), dkm.get(Integer.valueOf(1), Double.valueOf(1)));
- assertEquals(Character.valueOf('B'), dkm.get(Integer.valueOf(1), Double.valueOf(2)));
- assertEquals(Character.valueOf('C'), dkm.get(Integer.valueOf(1), Double.valueOf(3)));
+ assertEquals(Character.valueOf('A'), dkm.get(Integer.valueOf(1), Double
+ .valueOf(1)));
+ assertEquals(Character.valueOf('B'), dkm.get(Integer.valueOf(1), Double
+ .valueOf(2)));
+ assertEquals(Character.valueOf('C'), dkm.get(Integer.valueOf(1), Double
+ .valueOf(3)));
assertNull(dkm.get(Integer.valueOf(1), Double.valueOf(0)));
- assertEquals(Character.valueOf('D'), dkm.get(Integer.valueOf(2), Double.valueOf(1)));
- assertEquals(Character.valueOf('E'), dkm.get(Integer.valueOf(2), Double.valueOf(2)));
+ assertEquals(Character.valueOf('D'), dkm.get(Integer.valueOf(2), Double
+ .valueOf(1)));
+ assertEquals(Character.valueOf('E'), dkm.get(Integer.valueOf(2), Double
+ .valueOf(2)));
assertEquals(Character.valueOf('F'), dkm.get(null, Double.valueOf(3)));
assertEquals(Character.valueOf('G'), dkm.get(Integer.valueOf(3), null));
assertNull(dkm.get(Integer.valueOf(2), Double.valueOf(3)));
@@ -72,6 +78,28 @@
}
@Test
+ public void testRemoveAll()
+ {
+ assertNull(dkm.get(Integer.valueOf(1), Double.valueOf(0)));
+ populate();
+ dkm.removeAll(Integer.valueOf(1));
+ assertNull(dkm.get(Integer.valueOf(1), Double.valueOf(1)));
+ assertNull(dkm.get(Integer.valueOf(1), Double.valueOf(2)));
+ assertNull(dkm.get(Integer.valueOf(1), Double.valueOf(3)));
+ assertNull(dkm.get(Integer.valueOf(1), Double.valueOf(0)));
+ assertEquals(Character.valueOf('D'), dkm.get(Integer.valueOf(2), Double
+ .valueOf(1)));
+ assertEquals(Character.valueOf('E'), dkm.get(Integer.valueOf(2), Double
+ .valueOf(2)));
+ assertEquals(Character.valueOf('F'), dkm.get(null, Double.valueOf(3)));
+ assertEquals(Character.valueOf('G'), dkm.get(Integer.valueOf(3), null));
+ assertNull(dkm.get(Integer.valueOf(2), Double.valueOf(3)));
+ assertNull(dkm.get(Integer.valueOf(4), Double.valueOf(0)));
+ assertNull(dkm.get(Integer.valueOf(1), null));
+ assertNull(dkm.get(null, Double.valueOf(1)));
+ }
+
+ @Test
public void testContainsKey()
{
assertFalse(dkm.containsKey(Integer.valueOf(4)));
@@ -98,18 +126,23 @@
{
assertNull(dkm.remove(Integer.valueOf(1), Double.valueOf(1)));
populate();
- assertEquals(Character.valueOf('A'), dkm.remove(Integer.valueOf(1), Double.valueOf(1)));
+ assertEquals(Character.valueOf('A'), dkm.remove(Integer.valueOf(1),
+ Double.valueOf(1)));
assertFalse(dkm.containsKey(Integer.valueOf(1), Double.valueOf(1)));
assertNull(dkm.remove(Integer.valueOf(1), Double.valueOf(1)));
- assertEquals(Character.valueOf('F'), dkm.remove(null, Double.valueOf(3)));
+ assertEquals(Character.valueOf('F'), dkm
+ .remove(null, Double.valueOf(3)));
assertFalse(dkm.containsKey(null, Double.valueOf(3)));
assertNull(dkm.remove(null, Double.valueOf(3)));
- assertEquals(Character.valueOf('G'), dkm.remove(Integer.valueOf(3), null));
+ assertEquals(Character.valueOf('G'), dkm.remove(Integer.valueOf(3),
+ null));
assertFalse(dkm.containsKey(Integer.valueOf(3), null));
assertNull(dkm.remove(Integer.valueOf(3), null));
- assertEquals(Character.valueOf('B'), dkm.remove(Integer.valueOf(1), Double.valueOf(2)));
+ assertEquals(Character.valueOf('B'), dkm.remove(Integer.valueOf(1),
+ Double.valueOf(2)));
assertTrue(dkm.containsKey(Integer.valueOf(1)));
- assertEquals(Character.valueOf('C'), dkm.remove(Integer.valueOf(1), Double.valueOf(3)));
+ assertEquals(Character.valueOf('C'), dkm.remove(Integer.valueOf(1),
+ Double.valueOf(3)));
assertFalse(dkm.containsKey(Integer.valueOf(1)));
}
@@ -272,4 +305,196 @@
assertFalse(dkm.removeValue(Integer.valueOf(5), null));
assertFalse(dkm.containsKey(Integer.valueOf(5), Double.valueOf(6)));
}
+
+ @Test
+ public void testDKMconstructorOneClear()
+ {
+ populate();
+ DoubleKeyMap<Integer, Double, Character> dkm2;
+ dkm2 = new DoubleKeyMap<Integer, Double, Character>(dkm);
+ // Ensure 1 clear is innocent
+ dkm.clear();
+ assertFalse(dkm2.isEmpty());
+ assertEquals(Character.valueOf('A'), dkm2.get(Integer.valueOf(1),
+ Double.valueOf(1)));
+ assertEquals(Character.valueOf('B'), dkm2.get(Integer.valueOf(1),
+ Double.valueOf(2)));
+ }
+
+ @Test
+ public void testDKMconstructorTwoClear()
+ {
+ populate();
+ DoubleKeyMap<Integer, Double, Character> dkm2;
+ dkm2 = new DoubleKeyMap<Integer, Double, Character>(dkm);
+ // Ensure 2 clear is innocent
+ dkm2.clear();
+ assertFalse(dkm.isEmpty());
+ assertEquals(Character.valueOf('A'), dkm.get(Integer.valueOf(1), Double
+ .valueOf(1)));
+ assertEquals(Character.valueOf('B'), dkm.get(Integer.valueOf(1), Double
+ .valueOf(2)));
+ }
+
+ @Test
+ public void testDKMconstructorOneChange()
+ {
+ populate();
+ DoubleKeyMap<Integer, Double, Character> dkm2;
+ dkm2 = new DoubleKeyMap<Integer, Double, Character>(dkm);
+ // Ensure 1 change is innocent
+ dkm.put(Integer.valueOf(1), Double.valueOf(1), 'Z');
+ assertEquals(Character.valueOf('Z'), dkm.get(Integer.valueOf(1), Double
+ .valueOf(1)));
+ assertEquals(Character.valueOf('A'), dkm2.get(Integer.valueOf(1),
+ Double.valueOf(1)));
+ }
+
+ @Test
+ public void testDKMconstructorTwoChange()
+ {
+ populate();
+ DoubleKeyMap<Integer, Double, Character> dkm2;
+ dkm2 = new DoubleKeyMap<Integer, Double, Character>(dkm);
+ // Ensure 2 change is innocent
+ dkm2.put(Integer.valueOf(1), Double.valueOf(1), 'Z');
+ assertEquals(Character.valueOf('A'), dkm.get(Integer.valueOf(1), Double
+ .valueOf(1)));
+ assertEquals(Character.valueOf('Z'), dkm2.get(Integer.valueOf(1),
+ Double.valueOf(1)));
+ }
+
+ @Test
+ public void testDKMconstructorOneRemoveAll()
+ {
+ populate();
+ DoubleKeyMap<Integer, Double, Character> dkm2;
+ dkm2 = new DoubleKeyMap<Integer, Double, Character>(dkm);
+ // Ensure 1 remove is innocent
+ dkm.removeAll(Integer.valueOf(1));
+ assertEquals(null, dkm.get(Integer.valueOf(1), Double.valueOf(1)));
+ assertEquals(Character.valueOf('A'), dkm2.get(Integer.valueOf(1),
+ Double.valueOf(1)));
+ }
+
+ @Test
+ public void testDKMconstructorTwoRemoveAll()
+ {
+ populate();
+ DoubleKeyMap<Integer, Double, Character> dkm2;
+ dkm2 = new DoubleKeyMap<Integer, Double, Character>(dkm);
+ // Ensure 2 remove is innocent
+ dkm2.removeAll(Integer.valueOf(1));
+ assertEquals(null, dkm2.get(Integer.valueOf(1), Double.valueOf(1)));
+ assertEquals(Character.valueOf('A'), dkm.get(Integer.valueOf(1), Double
+ .valueOf(1)));
+ }
+
+ @Test
+ public void testDKMputAllOneClear()
+ {
+ populate();
+ DoubleKeyMap<Integer, Double, Character> dkm2 =
+ new DoubleKeyMap<Integer, Double, Character>();
+ dkm2.putAll(dkm);
+ // Ensure 1 clear is innocent
+ dkm.clear();
+ assertFalse(dkm2.isEmpty());
+ assertEquals(Character.valueOf('A'), dkm2.get(Integer.valueOf(1),
+ Double.valueOf(1)));
+ assertEquals(Character.valueOf('B'), dkm2.get(Integer.valueOf(1),
+ Double.valueOf(2)));
+ }
+
+ @Test
+ public void testDKMputAllTwoClear()
+ {
+ populate();
+ DoubleKeyMap<Integer, Double, Character> dkm2 =
+ new DoubleKeyMap<Integer, Double, Character>();
+ dkm2.putAll(dkm);
+ // Ensure 2 clear is innocent
+ dkm2.clear();
+ assertFalse(dkm.isEmpty());
+ assertEquals(Character.valueOf('A'), dkm.get(Integer.valueOf(1), Double
+ .valueOf(1)));
+ assertEquals(Character.valueOf('B'), dkm.get(Integer.valueOf(1), Double
+ .valueOf(2)));
+ }
+
+ @Test
+ public void testDKMputAllOneChange()
+ {
+ populate();
+ DoubleKeyMap<Integer, Double, Character> dkm2 =
+ new DoubleKeyMap<Integer, Double, Character>();
+ dkm2.putAll(dkm);
+ // Ensure 1 change is innocent
+ dkm.put(Integer.valueOf(1), Double.valueOf(1), 'Z');
+ assertEquals(Character.valueOf('Z'), dkm.get(Integer.valueOf(1), Double
+ .valueOf(1)));
+ assertEquals(Character.valueOf('A'), dkm2.get(Integer.valueOf(1),
+ Double.valueOf(1)));
+ }
+
+ @Test
+ public void testDKMputAllTwoChange()
+ {
+ populate();
+ DoubleKeyMap<Integer, Double, Character> dkm2 =
+ new DoubleKeyMap<Integer, Double, Character>();
+ dkm2.putAll(dkm);
+ // Ensure 2 change is innocent
+ dkm2.put(Integer.valueOf(1), Double.valueOf(1), 'Z');
+ assertEquals(Character.valueOf('A'), dkm.get(Integer.valueOf(1), Double
+ .valueOf(1)));
+ assertEquals(Character.valueOf('Z'), dkm2.get(Integer.valueOf(1),
+ Double.valueOf(1)));
+ }
+
+ @Test
+ public void testDKMputAllOneRemoveAll()
+ {
+ populate();
+ DoubleKeyMap<Integer, Double, Character> dkm2 =
+ new DoubleKeyMap<Integer, Double, Character>();
+ dkm2.putAll(dkm);
+ // Ensure 1 remove is innocent
+ dkm.removeAll(Integer.valueOf(1));
+ assertEquals(null, dkm.get(Integer.valueOf(1), Double.valueOf(1)));
+ assertEquals(Character.valueOf('A'), dkm2.get(Integer.valueOf(1),
+ Double.valueOf(1)));
+ }
+
+ @Test
+ public void testDKMputAllTwoRemoveAll()
+ {
+ populate();
+ DoubleKeyMap<Integer, Double, Character> dkm2 =
+ new DoubleKeyMap<Integer, Double, Character>();
+ dkm2.putAll(dkm);
+ // Ensure 2 remove is innocent
+ dkm2.removeAll(Integer.valueOf(1));
+ assertEquals(null, dkm2.get(Integer.valueOf(1), Double.valueOf(1)));
+ assertEquals(Character.valueOf('A'), dkm.get(Integer.valueOf(1), Double
+ .valueOf(1)));
+ }
+
+ @Test
+ public void testPutAllNull()
+ {
+ try
+ {
+ dkm.putAll(null);
+ fail();
+ }
+ catch (NullPointerException e)
+ {
+ // OK
+ }
+ catch (IllegalArgumentException e)
+ {
+ // OK
+ }
+ }
}
Added: branches/cdom/code/src/utest/pcgen/base/util/TreeMapToListTest.java
===================================================================
--- branches/cdom/code/src/utest/pcgen/base/util/TreeMapToListTest.java (rev 0)
+++ branches/cdom/code/src/utest/pcgen/base/util/TreeMapToListTest.java 2007-09-29 22:03:55 UTC (rev 4186)
@@ -0,0 +1,344 @@
+/*
+ * Copyright (c) 2007 Tom Parker <th...@us...>
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+package pcgen.base.util;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+import junit.framework.TestCase;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class TreeMapToListTest extends TestCase
+{
+
+ private static final Character CONST_E = 'E';
+
+ private static final Character CONST_C = 'C';
+
+ private static final Character CONST_G = 'G';
+
+ private static final Character CONST_F = 'F';
+
+ private static final Character CONST_D = 'D';
+
+ private static final Character CONST_B = 'B';
+
+ private static final Character CONST_A = 'A';
+
+ TreeMapToList<Integer, Character> dkm;
+
+ @Before
+ public void setUp()
+ {
+ dkm = new TreeMapToList<Integer, Character>();
+ }
+
+ public void populate()
+ {
+ dkm.addToListFor(Integer.valueOf(1), CONST_A);
+ dkm.addToListFor(Integer.valueOf(1), CONST_B);
+ dkm.addToListFor(Integer.valueOf(1), CONST_C);
+ dkm.addToListFor(Integer.valueOf(2), CONST_D);
+ dkm.addToListFor(Integer.valueOf(2), CONST_E);
+ dkm.addToListFor(Integer.valueOf(2), null);
+ dkm.addToListFor(Integer.valueOf(5), null);
+ }
+
+ @Test
+ void putNull()
+ {
+ try
+ {
+ dkm.addToListFor(null, CONST_F);
+ fail();
+ }
+ catch (NullPointerException e)
+ {
+ // OK
+ }
+ catch (IllegalArgumentException e)
+ {
+ // OK
+ }
+ }
+
+ @Test
+ public void testPutGet()
+ {
+ assertNull(dkm.getListFor(null));
+ assertNull(dkm.getListFor(Integer.valueOf(1)));
+ populate();
+ List l = dkm.getListFor(Integer.valueOf(1));
+ assertEquals(3, l.size());
+ assertTrue(l.contains(CONST_A));
+ assertTrue(l.contains(CONST_B));
+ assertTrue(l.contains(CONST_C));
+ dkm.addToListFor(Integer.valueOf(1), CONST_C);
+ l = dkm.getListFor(Integer.valueOf(1));
+ assertEquals(4, l.size());
+ assertTrue(l.contains(CONST_A));
+ assertTrue(l.contains(CONST_B));
+ assertTrue(l.contains(CONST_C));
+ // two of them
+ l.remove(Character.valueOf(CONST_C));
+ assertTrue(l.contains(CONST_C));
+ l = dkm.getListFor(Integer.valueOf(2));
+ assertEquals(3, l.size());
+ assertTrue(l.contains(CONST_D));
+ assertTrue(l.contains(CONST_E));
+ assertTrue(l.contains(null));
+ dkm.addToListFor(Integer.valueOf(2), null);
+ l = dkm.getListFor(Integer.valueOf(2));
+ assertEquals(4, l.size());
+ assertTrue(l.contains(CONST_D));
+ assertTrue(l.contains(CONST_E));
+ assertTrue(l.contains(null));
+ // Two of them.
+ l.remove(null);
+ assertTrue(l.contains(null));
+ assertNull(dkm.getListFor(Integer.valueOf(4)));
+ l = dkm.getListFor(Integer.valueOf(5));
+ assertEquals(1, l.size());
+ assertTrue(l.contains(null));
+ l.add(CONST_A);
+ List l2 = dkm.getListFor(Integer.valueOf(5));
+ assertEquals(1, l2.size());
+ assertTrue(l2.contains(null));
+ assertEquals(2, l.size());
+ assertTrue(l.contains(null));
+ assertTrue(l.contains(CONST_A));
+ dkm.clear();
+ assertEquals(1, l2.size());
+ assertTrue(l2.contains(null));
+ assertEquals(2, l.size());
+ assertTrue(l.contains(null));
+ assertTrue(l.contains(CONST_A));
+ l2.clear();
+ assertEquals(0, l2.size());
+ assertEquals(2, l.size());
+ assertTrue(l.contains(null));
+ assertTrue(l.contains(CONST_A));
+ }
+
+ @Test
+ public void testContainsKey()
+ {
+ assertFalse(dkm.containsListFor(Integer.valueOf(1)));
+ populate();
+ assertTrue(dkm.containsListFor(Integer.valueOf(1)));
+ // Keys are .equals items, not instance
+ assertTrue(dkm.containsListFor(new Integer(1)));
+ assertTrue(dkm.containsListFor(Integer.valueOf(2)));
+ assertTrue(dkm.containsListFor(Integer.valueOf(5)));
+ assertFalse(dkm.containsListFor(Integer.valueOf(-4)));
+ }
+
+ @Test
+ public void testRemoveListFor()
+ {
+ assertNull(dkm.removeListFor(Integer.valueOf(1)));
+ populate();
+ List l = dkm.removeListFor(Integer.valueOf(1));
+ assertEquals(3, l.size());
+ assertTrue(l.contains(CONST_A));
+ assertTrue(l.contains(CONST_B));
+ assertTrue(l.contains(CONST_C));
+ assertFalse(dkm.containsListFor(Integer.valueOf(1)));
+ assertNull(dkm.getListFor(Integer.valueOf(1)));
+ l = dkm.removeListFor(Integer.valueOf(2));
+ assertEquals(3, l.size());
+ assertTrue(l.contains(CONST_D));
+ assertTrue(l.contains(CONST_E));
+ assertTrue(l.contains(null));
+ }
+
+ @Test
+ public void testRemoveFromListFor()
+ {
+ assertFalse(dkm.removeFromListFor(Integer.valueOf(1), CONST_D));
+ populate();
+ assertTrue(dkm.removeFromListFor(Integer.valueOf(1), CONST_A));
+ assertTrue(dkm.containsListFor(Integer.valueOf(1)));
+ // Keys are .equals items, not instance
+ assertTrue(dkm.containsListFor(new Integer(1)));
+ assertEquals(2, dkm.sizeOfListFor(Integer.valueOf(1)));
+ assertFalse(dkm.removeFromListFor(Integer.valueOf(1), CONST_A));
+ assertTrue(dkm.removeFromListFor(Integer.valueOf(1), CONST_B));
+ assertEquals(1, dkm.sizeOfListFor(Integer.valueOf(1)));
+ assertTrue(dkm.containsListFor(Integer.valueOf(1)));
+ assertFalse(dkm.removeFromListFor(Integer.valueOf(1), CONST_A));
+ assertTrue(dkm.removeFromListFor(Integer.valueOf(1), CONST_C));
+ assertEquals(0, dkm.sizeOfListFor(Integer.valueOf(1)));
+ assertFalse(dkm.containsListFor(Integer.valueOf(1)));
+
+ // add a second :)
+ dkm.addToListFor(Integer.valueOf(2), CONST_D);
+ assertFalse(dkm.removeFromListFor(Integer.valueOf(2), CONST_A));
+ assertTrue(dkm.containsListFor(Integer.valueOf(2)));
+ assertEquals(4, dkm.sizeOfListFor(Integer.valueOf(2)));
+ assertFalse(dkm.removeFromListFor(Integer.valueOf(2), CONST_A));
+ assertTrue(dkm.removeFromListFor(Integer.valueOf(2), CONST_D));
+ assertEquals(3, dkm.sizeOfListFor(Integer.valueOf(2)));
+ assertTrue(dkm.containsListFor(Integer.valueOf(2)));
+ assertTrue(dkm.removeFromListFor(Integer.valueOf(2), CONST_E));
+ assertEquals(2, dkm.sizeOfListFor(Integer.valueOf(2)));
+ assertTrue(dkm.containsListFor(Integer.valueOf(2)));
+ assertTrue(dkm.removeFromListFor(Integer.valueOf(2), null));
+ assertEquals(1, dkm.sizeOfListFor(Integer.valueOf(2)));
+ assertTrue(dkm.containsListFor(Integer.valueOf(2)));
+ assertTrue(dkm.removeFromListFor(Integer.valueOf(2), CONST_D));
+ assertEquals(0, dkm.sizeOfListFor(Integer.valueOf(2)));
+ assertFalse(dkm.containsListFor(Integer.valueOf(2)));
+ }
+
+ @Test
+ public void testContainsInList()
+ {
+ assertFalse(dkm.containsInList(Integer.valueOf(1), CONST_D));
+ populate();
+ assertTrue(dkm.containsInList(Integer.valueOf(1), CONST_A));
+ // Keys are .equals items, not instance
+ assertTrue(dkm.containsInList(new Integer(1), CONST_A));
+ assertTrue(dkm.containsInList(Integer.valueOf(1), CONST_B));
+ assertTrue(dkm.containsInList(Integer.valueOf(1), CONST_C));
+ assertFalse(dkm.containsInList(Integer.valueOf(1), CONST_D));
+
+ // add a second :)
+ dkm.addToListFor(Integer.valueOf(1), CONST_C);
+ assertTrue(dkm.containsInList(Integer.valueOf(1), CONST_C));
+
+ // Test null stuff :)
+ assertTrue(dkm.containsInList(Integer.valueOf(2), null));
+ }
+
+ @Test
+ public void testGetKeySet()
+ {
+ Set<Integer> s = dkm.getKeySet();
+ assertEquals(0, s.size());
+ s.add(Integer.valueOf(-5));
+ // Ensure not saved in DoubleKeyMap
+ Set<Integer> s2 = dkm.getKeySet();
+ assertEquals(0, s2.size());
+ assertEquals(1, s.size());
+ // And ensure references are not kept the other direction to be altered
+ // by changes in the underlying DoubleKeyMap
+ populate();
+ assertEquals(1, s.size());
+ assertEquals(0, s2.size());
+ Set<Integer> s3 = dkm.getKeySet();
+ assertEquals(3, s3.size());
+ assertTrue(s3.contains(Integer.valueOf(1)));
+ assertTrue(s3.contains(Integer.valueOf(2)));
+ assertTrue(s3.contains(Integer.valueOf(5)));
+ }
+
+ @Test
+ public void testClearIsEmpty()
+ {
+ assertTrue(dkm.isEmpty());
+ assertEquals(0, dkm.size());
+ populate();
+ assertFalse(dkm.isEmpty());
+ assertEquals(3, dkm.size());
+ dkm.clear();
+ assertTrue(dkm.isEmpty());
+ assertEquals(0, dkm.size());
+ dkm.addToListFor(Integer.valueOf(3), 'G');
+ assertFalse(dkm.isEmpty());
+ assertEquals(1, dkm.size());
+ dkm.clear();
+ assertTrue(dkm.isEmpty());
+ assertEquals(0, dkm.size());
+ dkm.addToListFor(Integer.valueOf(5), null);
+ assertFalse(dkm.isEmpty());
+ assertEquals(1, dkm.size());
+ dkm.clear();
+ assertTrue(dkm.isEmpty());
+ assertEquals(0, dkm.size());
+ }
+
+ @Test
+ public void testEmptyAddAll()
+ {
+ dkm.addAllToListFor(Integer.valueOf(1), null);
+ assertFalse(dkm.containsListFor(Integer.valueOf(1)));
+ dkm.addAllToListFor(Integer.valueOf(1), new ArrayList());
+ assertFalse(dkm.containsListFor(Integer.valueOf(1)));
+ }
+
+ @Test
+ public void testAddAll()
+ {
+ List l = new ArrayList();
+ l.add(CONST_A);
+ l.add(null);
+ l.add(CONST_A);
+ l.add(CONST_B);
+ dkm.addAllToListFor(Integer.valueOf(1), l);
+ assertTrue(dkm.containsListFor(Integer.valueOf(1)));
+ assertEquals(4, dkm.sizeOfListFor(Integer.valueOf(1)));
+ dkm.addToListFor(Integer.valueOf(1), CONST_D);
+ assertEquals(4, l.size());
+ // Check reference semantics!
+ l.add(CONST_C);
+ l.add(CONST_E);
+ assertTrue(dkm.containsListFor(Integer.valueOf(1)));
+ assertEquals(5, dkm.sizeOfListFor(Integer.valueOf(1)));
+ l.clear();
+ assertTrue(dkm.containsListFor(Integer.valueOf(1)));
+ assertEquals(5, dkm.sizeOfListFor(Integer.valueOf(1)));
+ }
+
+ @Test
+ public void testInstanceBehavior()
+ {
+ Character ca = Character.valueOf('a');
+ Character cb = Character.valueOf('b');
+ Character cc = Character.valueOf('c');
+ Character ca1 = new Character('a');
+ Integer i1 = Integer.valueOf(1);
+ dkm.addToListFor(i1, ca);
+ dkm.addToListFor(i1, cb);
+ dkm.addToListFor(i1, cc);
+ Integer i2 = Integer.valueOf(2);
+ dkm.addToListFor(i2, ca);
+ dkm.addToListFor(i2, ca);
+ Integer i3 = Integer.valueOf(3);
+ dkm.addToListFor(i3, cb);
+ dkm.addToListFor(i3, cc);
+ assertTrue(dkm.containsInList(i1, ca));
+ assertTrue(dkm.containsInList(i1, ca1));
+ assertTrue(dkm.removeFromListFor(i1, ca1));
+ assertFalse(dkm.containsInList(i1, ca));
+
+ assertTrue(dkm.containsInList(i2, ca));
+ assertTrue(dkm.containsInList(i2, ca1));
+ assertTrue(dkm.removeFromListFor(i2, ca1));
+ // There were two
+ assertTrue(dkm.containsInList(i2, ca));
+ assertTrue(dkm.removeFromListFor(i2, ca));
+ // There were two
+ assertFalse(dkm.containsInList(i2, ca));
+ }
+
+ // TODO Need to test iterator order
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <th...@us...> - 2007-09-29 19:35:24
|
Revision: 4183
http://pcgen.svn.sourceforge.net/pcgen/?rev=4183&view=rev
Author: thpr
Date: 2007-09-29 11:38:20 -0700 (Sat, 29 Sep 2007)
Log Message:
-----------
Bring CDOM up to 4173
Modified Paths:
--------------
branches/cdom/code/pluginbuild.xml
branches/cdom/code/src/itest/plugin/lsttokens/loader/SaLstLoaderTest.java
branches/cdom/code/src/test/pcgen/core/DescriptionTest.java
branches/cdom/code/src/test/pcgen/core/PObjectTest.java
branches/cdom/code/src/test/pcgen/core/levelability/LevelAbilityAbilityTest.java
branches/cdom/code/src/test/pcgen/core/prereq/PreAbilityTest.java
branches/cdom/code/src/test/pcgen/core/prereq/PreWeaponProfTest.java
branches/cdom/code/src/test/pcgen/persistence/lst/BioSetLoaderTest.java
branches/cdom/code/src/test/pcgen/persistence/lst/prereq/PreAbilityParserTest.java
branches/cdom/code/src/test/plugin/exporttokens/AttackTokenTest.java
branches/cdom/code/src/utest/plugin/lsttokens/TokenGlobalTestSuite.java
branches/cdom/code/src/utest/plugin/lsttokens/template/HDTokenTest.java
branches/cdom/code/src/utest/plugin/lsttokens/template/LevelTokenTest.java
branches/cdom/code/src/utest/plugin/lsttokens/template/RepeatLevelTokenTest.java
branches/cdom/code/testsuite/csheets/BarJack.xml
branches/cdom/code/testsuite/csheets/BrdJoe.xml
branches/cdom/code/testsuite/csheets/CleElf.xml
branches/cdom/code/testsuite/csheets/CloudGiantHalfDragon.xml
branches/cdom/code/testsuite/csheets/Quasvin.xml
branches/cdom/code/testsuite/csheets/SWizSam.xml
branches/cdom/code/testsuite/csheets/WizShar.xml
Added Paths:
-----------
branches/cdom/code/src/utest/plugin/lsttokens/SabLstTest.java
Removed Paths:
-------------
branches/cdom/code/src/utest/plugin/lsttokens/SaLstTest.java
Modified: branches/cdom/code/pluginbuild.xml
===================================================================
--- branches/cdom/code/pluginbuild.xml 2007-09-29 18:37:52 UTC (rev 4182)
+++ branches/cdom/code/pluginbuild.xml 2007-09-29 18:38:20 UTC (rev 4183)
@@ -2737,13 +2737,6 @@
</patternset>
</fileset>
</jar>
- <jar jarfile="${lstplugins.dir}/ChooseToken-EQBUILDER.jar" manifest="${src.java.dir}/plugin/lsttokens/manifest.mf">
- <fileset dir="${build.classes.dir}">
- <patternset>
- <include name="plugin/lsttokens/choose/EqBuilderToken.class" />
- </patternset>
- </fileset>
- </jar>
<jar jarfile="${lstplugins.dir}/ChooseToken-EQBUILDER.SPELL.jar" manifest="${src.java.dir}/plugin/lsttokens/manifest.mf">
<fileset dir="${build.classes.dir}">
<patternset>
@@ -2912,14 +2905,13 @@
</patternset>
</fileset>
</jar>
- <!-- <jar jarfile="${lstplugins.dir}/ChooseToken-STRING.jar" manifest="${src.java.dir}/plugin/lsttokens/manifest.mf">
+ <jar jarfile="${lstplugins.dir}/ChooseToken-STRING.jar" manifest="${src.java.dir}/plugin/lsttokens/manifest.mf">
<fileset dir="${build.classes.dir}">
<patternset>
<include name="plugin/lsttokens/choose/StringToken.class" />
</patternset>
</fileset>
</jar>
--->
<jar jarfile="${lstplugins.dir}/ChooseToken-USERINPUT.jar" manifest="${src.java.dir}/plugin/lsttokens/manifest.mf">
<fileset dir="${build.classes.dir}">
<patternset>
@@ -5653,6 +5645,20 @@
</patternset>
</fileset>
</jar>
+ <jar jarfile="${systemlstplugins.dir}/GameModeLstToken-PREVIEWDIR.jar" manifest="${src.java.dir}/plugin/lsttokens/manifest.mf">
+ <fileset dir="${build.classes.dir}">
+ <patternset>
+ <include name="plugin/lsttokens/gamemode/PreviewDirToken.class" />
+ </patternset>
+ </fileset>
+ </jar>
+ <jar jarfile="${systemlstplugins.dir}/GameModeLstToken-PREVIEWSHEET.jar" manifest="${src.java.dir}/plugin/lsttokens/manifest.mf">
+ <fileset dir="${build.classes.dir}">
+ <patternset>
+ <include name="plugin/lsttokens/gamemode/PreviewSheetToken.class" />
+ </patternset>
+ </fileset>
+ </jar>
<jar jarfile="${systemlstplugins.dir}/GameModeLstToken-RANGEPENALTY.jar" manifest="${src.java.dir}/plugin/lsttokens/manifest.mf">
<fileset dir="${build.classes.dir}">
<patternset>
@@ -6024,6 +6030,13 @@
</patternset>
</fileset>
</jar>
+ <jar jarfile="${systemlstplugins.dir}/GameMode-AbilityCategory-DISPLAYLOCATION.jar" manifest="${src.java.dir}/plugin/lsttokens/manifest.mf">
+ <fileset dir="${build.classes.dir}">
+ <patternset>
+ <include name="plugin/lsttokens/gamemode/abilitycategory/DisplayLocationToken.class" />
+ </patternset>
+ </fileset>
+ </jar>
<jar jarfile="${systemlstplugins.dir}/GameMode-AbilityCategory-DISPLAYNAME.jar" manifest="${src.java.dir}/plugin/lsttokens/manifest.mf">
<fileset dir="${build.classes.dir}">
<patternset>
Modified: branches/cdom/code/src/itest/plugin/lsttokens/loader/SaLstLoaderTest.java
===================================================================
--- branches/cdom/code/src/itest/plugin/lsttokens/loader/SaLstLoaderTest.java 2007-09-29 18:37:52 UTC (rev 4182)
+++ branches/cdom/code/src/itest/plugin/lsttokens/loader/SaLstLoaderTest.java 2007-09-29 18:38:20 UTC (rev 4183)
@@ -26,7 +26,7 @@
import pcgen.persistence.lst.GlobalLstToken;
import pcgen.persistence.lst.LstObjectFileLoader;
import pcgen.persistence.lst.PCTemplateLoader;
-import plugin.lsttokens.SaLst;
+import plugin.lsttokens.SabLst;
import plugin.lsttokens.loader.testsupport.AbstractTokenLoaderTestCase;
/**
@@ -36,7 +36,7 @@
* @version $Revision$
*/
public class SaLstLoaderTest extends AbstractTokenLoaderTestCase{
- static GlobalLstToken token = new SaLst();
+ static GlobalLstToken token = new SabLst();
static PCTemplateLoader loader = new PCTemplateLoader();
@Override
Modified: branches/cdom/code/src/test/pcgen/core/DescriptionTest.java
===================================================================
--- branches/cdom/code/src/test/pcgen/core/DescriptionTest.java 2007-09-29 18:37:52 UTC (rev 4182)
+++ branches/cdom/code/src/test/pcgen/core/DescriptionTest.java 2007-09-29 18:38:20 UTC (rev 4183)
@@ -202,17 +202,18 @@
final Description desc = new Description("%1 test %3 %2");
desc.addVariable("TestVar");
desc.setOwner(dummy);
- assertTrue(desc.getDescription(getCharacter()).equals("0 test "));
+ assertEquals("0 test ", desc.getDescription(getCharacter()));
getCharacter().setRace(dummy);
- assertTrue(desc.getDescription(getCharacter()).equals("2 test "));
+ assertEquals("2 test ", desc.getDescription(getCharacter()));
desc.addVariable("%CHOICE");
- assertTrue(desc.getDescription(getCharacter()).equals(
- "2 test Associated 1"));
+ assertEquals("2 test Associated 1", desc
+ .getDescription(getCharacter()));
desc.addVariable("%LIST");
- assertTrue(desc.getDescription(getCharacter()).equals(
- "2 test Associated 1,Associated 2 Associated 1"));
+ assertEquals("Replacement of %LIST failed",
+ "2 test Associated 1 and Associated 2 Associated 1", desc
+ .getDescription(getCharacter()));
}
}
Modified: branches/cdom/code/src/test/pcgen/core/PObjectTest.java
===================================================================
--- branches/cdom/code/src/test/pcgen/core/PObjectTest.java 2007-09-29 18:37:52 UTC (rev 4182)
+++ branches/cdom/code/src/test/pcgen/core/PObjectTest.java 2007-09-29 18:38:20 UTC (rev 4183)
@@ -305,7 +305,7 @@
final Description desc2 = new Description("Description 2");
pobj.addDescription(desc2);
- assertEquals("Description should match", "Description 1,Description 2",
+ assertEquals("Description should match", "Description 1, Description 2",
pobj.getDescription(getCharacter()));
final Description desc3 = new Description("Description %1");
@@ -313,11 +313,11 @@
pobj.addDescription(desc3);
assertEquals("Description should match",
- "Description 1,Description 2,Description 3", pobj
+ "Description 1, Description 2, Description 3", pobj
.getDescription(getCharacter()));
pobj.removeDescription("Description 2");
- assertEquals("Description should match", "Description 1,Description 3",
+ assertEquals("Description should match", "Description 1, Description 3",
pobj.getDescription(getCharacter()));
pobj.removeDescription("Description %");
Modified: branches/cdom/code/src/test/pcgen/core/levelability/LevelAbilityAbilityTest.java
===================================================================
--- branches/cdom/code/src/test/pcgen/core/levelability/LevelAbilityAbilityTest.java 2007-09-29 18:37:52 UTC (rev 4182)
+++ branches/cdom/code/src/test/pcgen/core/levelability/LevelAbilityAbilityTest.java 2007-09-29 18:38:20 UTC (rev 4183)
@@ -30,16 +30,13 @@
import pcgen.AbstractCharacterTestCase;
import pcgen.core.Ability;
import pcgen.core.AbilityCategory;
-import pcgen.core.Globals;
import pcgen.core.PCClass;
import pcgen.core.PlayerCharacter;
import pcgen.core.Race;
-import pcgen.core.Skill;
import pcgen.gui.utils.SwingChooser;
import pcgen.util.Logging;
import pcgen.util.TestHelper;
import pcgen.util.chooser.ChooserFactory;
-import pcgen.util.chooser.ChooserInterface;
import plugin.lsttokens.AddLst;
/**
Modified: branches/cdom/code/src/test/pcgen/core/prereq/PreAbilityTest.java
===================================================================
--- branches/cdom/code/src/test/pcgen/core/prereq/PreAbilityTest.java 2007-09-29 18:37:52 UTC (rev 4182)
+++ branches/cdom/code/src/test/pcgen/core/prereq/PreAbilityTest.java 2007-09-29 18:38:20 UTC (rev 4183)
@@ -27,7 +27,6 @@
import junit.framework.TestSuite;
import pcgen.AbstractCharacterTestCase;
import pcgen.core.Ability;
-import pcgen.core.AbilityCategory;
import pcgen.core.PlayerCharacter;
import pcgen.core.prereq.Prerequisite;
import pcgen.persistence.PersistenceLayerException;
Modified: branches/cdom/code/src/test/pcgen/core/prereq/PreWeaponProfTest.java
===================================================================
--- branches/cdom/code/src/test/pcgen/core/prereq/PreWeaponProfTest.java 2007-09-29 18:37:52 UTC (rev 4182)
+++ branches/cdom/code/src/test/pcgen/core/prereq/PreWeaponProfTest.java 2007-09-29 18:38:20 UTC (rev 4183)
@@ -32,7 +32,6 @@
import pcgen.core.Ability;
import pcgen.core.AbilityUtilities;
import pcgen.core.Campaign;
-import pcgen.core.Equipment;
import pcgen.core.Globals;
import pcgen.core.PlayerCharacter;
import pcgen.core.WeaponProf;
Modified: branches/cdom/code/src/test/pcgen/persistence/lst/BioSetLoaderTest.java
===================================================================
--- branches/cdom/code/src/test/pcgen/persistence/lst/BioSetLoaderTest.java 2007-09-29 18:37:52 UTC (rev 4182)
+++ branches/cdom/code/src/test/pcgen/persistence/lst/BioSetLoaderTest.java 2007-09-29 18:38:20 UTC (rev 4183)
@@ -28,7 +28,6 @@
*/
package pcgen.persistence.lst;
-import java.io.File;
import java.net.URI;
import java.util.List;
import junit.framework.Test;
Modified: branches/cdom/code/src/test/pcgen/persistence/lst/prereq/PreAbilityParserTest.java
===================================================================
--- branches/cdom/code/src/test/pcgen/persistence/lst/prereq/PreAbilityParserTest.java 2007-09-29 18:37:52 UTC (rev 4182)
+++ branches/cdom/code/src/test/pcgen/persistence/lst/prereq/PreAbilityParserTest.java 2007-09-29 18:38:20 UTC (rev 4183)
@@ -33,7 +33,6 @@
import pcgen.core.SettingsHandler;
import pcgen.core.prereq.Prerequisite;
import pcgen.persistence.PersistenceLayerException;
-import pcgen.util.Logging;
import plugin.pretokens.parser.PreAbilityParser;
/**
Modified: branches/cdom/code/src/test/plugin/exporttokens/AttackTokenTest.java
===================================================================
--- branches/cdom/code/src/test/plugin/exporttokens/AttackTokenTest.java 2007-09-29 18:37:52 UTC (rev 4182)
+++ branches/cdom/code/src/test/plugin/exporttokens/AttackTokenTest.java 2007-09-29 18:38:20 UTC (rev 4183)
@@ -26,10 +26,6 @@
import junit.framework.Test;
import junit.framework.TestSuite;
import pcgen.AbstractCharacterTestCase;
-import pcgen.core.Equipment;
-import pcgen.core.EquipmentList;
-import pcgen.core.EquipmentModifier;
-import pcgen.core.GameMode;
import pcgen.core.Globals;
import pcgen.core.PCClass;
import pcgen.core.PCStat;
Deleted: branches/cdom/code/src/utest/plugin/lsttokens/SaLstTest.java
===================================================================
--- branches/cdom/code/src/utest/plugin/lsttokens/SaLstTest.java 2007-09-29 18:37:52 UTC (rev 4182)
+++ branches/cdom/code/src/utest/plugin/lsttokens/SaLstTest.java 2007-09-29 18:38:20 UTC (rev 4183)
@@ -1,149 +0,0 @@
-/*
- * Copyright (c) 2007 Tom Parker <th...@us...>
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this library; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
- */
-package plugin.lsttokens;
-
-import java.net.URISyntaxException;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import pcgen.core.PCTemplate;
-import pcgen.persistence.PersistenceLayerException;
-import pcgen.persistence.lst.GlobalLstToken;
-import pcgen.persistence.lst.LstObjectFileLoader;
-import pcgen.persistence.lst.PCTemplateLoader;
-import plugin.lsttokens.testsupport.AbstractGlobalTokenTestCase;
-import plugin.lsttokens.testsupport.TokenRegistration;
-import plugin.pretokens.parser.PreClassParser;
-import plugin.pretokens.parser.PreRaceParser;
-import plugin.pretokens.writer.PreClassWriter;
-import plugin.pretokens.writer.PreRaceWriter;
-
-public class SaLstTest extends AbstractGlobalTokenTestCase
-{
- static GlobalLstToken token = new SaLst();
- static PCTemplateLoader loader = new PCTemplateLoader();
-
- @Override
- public LstObjectFileLoader<PCTemplate> getLoader()
- {
- return loader;
- }
-
- @Override
- public Class<PCTemplate> getCDOMClass()
- {
- return PCTemplate.class;
- }
-
- @Override
- public GlobalLstToken getToken()
- {
- return token;
- }
-
- PreClassParser preclass = new PreClassParser();
- PreClassWriter preclasswriter = new PreClassWriter();
- PreRaceParser prerace = new PreRaceParser();
- PreRaceWriter preracewriter = new PreRaceWriter();
-
- @Override
- @Before
- public void setUp() throws PersistenceLayerException, URISyntaxException
- {
- super.setUp();
- TokenRegistration.register(preclass);
- TokenRegistration.register(prerace);
- TokenRegistration.register(preclasswriter);
- TokenRegistration.register(preracewriter);
- }
-
- @Test
- public void testInvalidDoublePipe() throws PersistenceLayerException
- {
- assertFalse(parse("SA Number %||VarF"));
- assertNoSideEffects();
- }
-
- @Test
- public void testInvalidEndingPipe() throws PersistenceLayerException
- {
- assertFalse(parse("SA Number|"));
- assertNoSideEffects();
- }
-
- @Test
- public void testInvalidStartingPipe() throws PersistenceLayerException
- {
- assertFalse(parse("|Var"));
- assertNoSideEffects();
- }
-
- @Test
- public void testInvalidVarAfterPre() throws PersistenceLayerException
- {
- assertFalse(parse("SA % plus %|Var|PRECLASS:1,Fighter|Var2"));
- assertNoSideEffects();
- }
-
- @Test
- public void testInvalidOnlyPre() throws PersistenceLayerException
- {
- assertFalse(parse("PRECLASS:1,Fighter"));
- assertNoSideEffects();
- }
-
- @Test
- public void testRoundRobinBase() throws PersistenceLayerException
- {
- runRoundRobin("SA Number One");
- }
-
- @Test
- public void testRoundRobinVariable() throws PersistenceLayerException
- {
- runRoundRobin("SA Number %|Variab");
- }
-
- @Test
- public void testRoundRobinPre() throws PersistenceLayerException
- {
- runRoundRobin("SA Number One|PRECLASS:1,Fighter=1");
- }
-
- @Test
- public void testRoundRobinDoublePre() throws PersistenceLayerException
- {
- runRoundRobin("SA Number One|PRECLASS:1,Fighter=1|PRERACE:1,Human");
- }
-
- @Test
- public void testRoundRobinVarDoublePre() throws PersistenceLayerException
- {
- runRoundRobin("SA Number % before %|Var|TwoVar|PRECLASS:1,Fighter=1|PRERACE:1,Human");
- }
-
- @Test
- public void testRoundRobinCompound() throws PersistenceLayerException
- {
- runRoundRobin(
- "SA Number % before %|Var|TwoVar|PRECLASS:1,Fighter=1|PRERACE:1,Human",
- "SA Number One|PRECLASS:1,Fighter=1");
- }
-
-}
Copied: branches/cdom/code/src/utest/plugin/lsttokens/SabLstTest.java (from rev 4173, branches/cdom/code/src/utest/plugin/lsttokens/SaLstTest.java)
===================================================================
--- branches/cdom/code/src/utest/plugin/lsttokens/SabLstTest.java (rev 0)
+++ branches/cdom/code/src/utest/plugin/lsttokens/SabLstTest.java 2007-09-29 18:38:20 UTC (rev 4183)
@@ -0,0 +1,149 @@
+/*
+ * Copyright (c) 2007 Tom Parker <th...@us...>
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+package plugin.lsttokens;
+
+import java.net.URISyntaxException;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import pcgen.core.PCTemplate;
+import pcgen.persistence.PersistenceLayerException;
+import pcgen.persistence.lst.GlobalLstToken;
+import pcgen.persistence.lst.LstObjectFileLoader;
+import pcgen.persistence.lst.PCTemplateLoader;
+import plugin.lsttokens.testsupport.AbstractGlobalTokenTestCase;
+import plugin.lsttokens.testsupport.TokenRegistration;
+import plugin.pretokens.parser.PreClassParser;
+import plugin.pretokens.parser.PreRaceParser;
+import plugin.pretokens.writer.PreClassWriter;
+import plugin.pretokens.writer.PreRaceWriter;
+
+public class SabLstTest extends AbstractGlobalTokenTestCase
+{
+ static GlobalLstToken token = new SabLst();
+ static PCTemplateLoader loader = new PCTemplateLoader();
+
+ @Override
+ public LstObjectFileLoader<PCTemplate> getLoader()
+ {
+ return loader;
+ }
+
+ @Override
+ public Class<PCTemplate> getCDOMClass()
+ {
+ return PCTemplate.class;
+ }
+
+ @Override
+ public GlobalLstToken getToken()
+ {
+ return token;
+ }
+
+ PreClassParser preclass = new PreClassParser();
+ PreClassWriter preclasswriter = new PreClassWriter();
+ PreRaceParser prerace = new PreRaceParser();
+ PreRaceWriter preracewriter = new PreRaceWriter();
+
+ @Override
+ @Before
+ public void setUp() throws PersistenceLayerException, URISyntaxException
+ {
+ super.setUp();
+ TokenRegistration.register(preclass);
+ TokenRegistration.register(prerace);
+ TokenRegistration.register(preclasswriter);
+ TokenRegistration.register(preracewriter);
+ }
+
+ @Test
+ public void testInvalidDoublePipe() throws PersistenceLayerException
+ {
+ assertFalse(parse("SA Number %||VarF"));
+ assertNoSideEffects();
+ }
+
+ @Test
+ public void testInvalidEndingPipe() throws PersistenceLayerException
+ {
+ assertFalse(parse("SA Number|"));
+ assertNoSideEffects();
+ }
+
+ @Test
+ public void testInvalidStartingPipe() throws PersistenceLayerException
+ {
+ assertFalse(parse("|Var"));
+ assertNoSideEffects();
+ }
+
+ @Test
+ public void testInvalidVarAfterPre() throws PersistenceLayerException
+ {
+ assertFalse(parse("SA % plus %|Var|PRECLASS:1,Fighter|Var2"));
+ assertNoSideEffects();
+ }
+
+ @Test
+ public void testInvalidOnlyPre() throws PersistenceLayerException
+ {
+ assertFalse(parse("PRECLASS:1,Fighter"));
+ assertNoSideEffects();
+ }
+
+ @Test
+ public void testRoundRobinBase() throws PersistenceLayerException
+ {
+ runRoundRobin("SA Number One");
+ }
+
+ @Test
+ public void testRoundRobinVariable() throws PersistenceLayerException
+ {
+ runRoundRobin("SA Number %|Variab");
+ }
+
+ @Test
+ public void testRoundRobinPre() throws PersistenceLayerException
+ {
+ runRoundRobin("SA Number One|PRECLASS:1,Fighter=1");
+ }
+
+ @Test
+ public void testRoundRobinDoublePre() throws PersistenceLayerException
+ {
+ runRoundRobin("SA Number One|PRECLASS:1,Fighter=1|PRERACE:1,Human");
+ }
+
+ @Test
+ public void testRoundRobinVarDoublePre() throws PersistenceLayerException
+ {
+ runRoundRobin("SA Number % before %|Var|TwoVar|PRECLASS:1,Fighter=1|PRERACE:1,Human");
+ }
+
+ @Test
+ public void testRoundRobinCompound() throws PersistenceLayerException
+ {
+ runRoundRobin(
+ "SA Number % before %|Var|TwoVar|PRECLASS:1,Fighter=1|PRERACE:1,Human",
+ "SA Number One|PRECLASS:1,Fighter=1");
+ }
+
+}
Modified: branches/cdom/code/src/utest/plugin/lsttokens/TokenGlobalTestSuite.java
===================================================================
--- branches/cdom/code/src/utest/plugin/lsttokens/TokenGlobalTestSuite.java 2007-09-29 18:37:52 UTC (rev 4182)
+++ branches/cdom/code/src/utest/plugin/lsttokens/TokenGlobalTestSuite.java 2007-09-29 18:38:20 UTC (rev 4183)
@@ -30,7 +30,7 @@
KitLstTest.class, LangAutoLstTest.class, MoveLstTest.class,
MoveCloneLstTest.class, NameispiLstTest.class, NaturalAttacksLstTest.class,
OutputNameLstTest.class, QualifyTokenTest.class, RegionLstTest.class,
- SaLstTest.class, SourceDateLstTest.class, SourceLongLstTest.class,
+ SabLstTest.class, SourceDateLstTest.class, SourceLongLstTest.class,
SourcePageLstTest.class, SourceShortLstTest.class, SourceWebLstTest.class,
SpellLevelLstTest.class, SpellsLstTest.class, SrLstTest.class,
TempdescLstTest.class, TemplateLstTest.class, TypeLstTest.class,
Modified: branches/cdom/code/src/utest/plugin/lsttokens/template/HDTokenTest.java
===================================================================
--- branches/cdom/code/src/utest/plugin/lsttokens/template/HDTokenTest.java 2007-09-29 18:37:52 UTC (rev 4182)
+++ branches/cdom/code/src/utest/plugin/lsttokens/template/HDTokenTest.java 2007-09-29 18:38:20 UTC (rev 4183)
@@ -29,7 +29,7 @@
import pcgen.persistence.lst.LstObjectFileLoader;
import pcgen.persistence.lst.PCTemplateLoader;
import plugin.lsttokens.DrLst;
-import plugin.lsttokens.SaLst;
+import plugin.lsttokens.SabLst;
import plugin.lsttokens.SrLst;
import plugin.lsttokens.testsupport.AbstractTokenTestCase;
import plugin.lsttokens.testsupport.TokenRegistration;
@@ -52,7 +52,7 @@
TokenRegistration.register(new CrToken());
TokenRegistration.register(new DrLst());
TokenRegistration.register(new SrLst());
- TokenRegistration.register(new SaLst());
+ TokenRegistration.register(new SabLst());
TokenRegistration.register(new LegsToken());
classSetUpFired = true;
}
@@ -168,7 +168,7 @@
@Test
public void testInvalidInputEmptySA() throws PersistenceLayerException
{
- assertFalse(parse("3+:SA:"));
+ assertFalse(parse("3+:SAB:"));
assertNoSideEffects();
}
@@ -191,7 +191,7 @@
public void testInvalidInputEmptySANoColon()
throws PersistenceLayerException
{
- assertFalse(parse("3+:SA"));
+ assertFalse(parse("3+:SAB"));
assertNoSideEffects();
}
@@ -210,7 +210,7 @@
assertFalse(parse("3+:D:1/+2"));
assertFalse(parse("3+:CRA:3"));
assertFalse(parse("3+:DRA:1/+2"));
- assertFalse(parse("3+:SAA:Special"));
+ assertFalse(parse("3+:SABA:Special"));
assertFalse(parse("3+:SRA:1"));
assertNoSideEffects();
}
@@ -234,7 +234,7 @@
public void testInvalidInputBadHDRangePlus()
throws PersistenceLayerException
{
- assertFalse(parse("+3:SA:Special Abil"));
+ assertFalse(parse("+3:SAB:Special Abil"));
assertNoSideEffects();
}
@@ -242,7 +242,7 @@
public void testInvalidInputBadHDRangeMult()
throws PersistenceLayerException
{
- assertFalse(parse("*3:SA:Special Abil"));
+ assertFalse(parse("*3:SAB:Special Abil"));
assertNoSideEffects();
}
@@ -250,7 +250,7 @@
public void testInvalidInputBadHDRangeTwoDash()
throws PersistenceLayerException
{
- assertFalse(parse("1--3:SA:Special Abil"));
+ assertFalse(parse("1--3:SAB:Special Abil"));
assertNoSideEffects();
}
@@ -258,7 +258,7 @@
public void testInvalidInputBadHDRangeEndDash()
throws PersistenceLayerException
{
- assertFalse(parse("4-:SA:Special Abil"));
+ assertFalse(parse("4-:SAB:Special Abil"));
assertNoSideEffects();
}
@@ -266,7 +266,7 @@
public void testInvalidInputBadHDRangeUpTo()
throws PersistenceLayerException
{
- assertFalse(parse("-4:SA:Special Abil"));
+ assertFalse(parse("-4:SAB:Special Abil"));
assertNoSideEffects();
}
@@ -298,7 +298,7 @@
@Test
public void testRoundRobinRangeSA() throws PersistenceLayerException
{
- runRoundRobin("5-7:SA:Special Ability, Man!");
+ runRoundRobin("5-7:SAB:Special Ability, Man!");
}
@Test
@@ -336,7 +336,7 @@
@Test
public void testRoundRobinMinimumSA() throws PersistenceLayerException
{
- runRoundRobin("5+:SA:Special Ability, Man!");
+ runRoundRobin("5+:SAB:Special Ability, Man!");
}
@Test
@@ -356,13 +356,13 @@
@Test
public void testRoundRobinMultiple() throws PersistenceLayerException
{
- runRoundRobin("4+:CR:MultFormula", "5+:SA:Special Ability, Man!");
+ runRoundRobin("4+:CR:MultFormula", "5+:SAB:Special Ability, Man!");
}
@Test
public void testRoundRobinMultipleSame() throws PersistenceLayerException
{
- runRoundRobin("4+:CR:Formula", "4+:SA:Special Ability, Man!");
+ runRoundRobin("4+:CR:Formula", "4+:SAB:Special Ability, Man!");
}
}
Modified: branches/cdom/code/src/utest/plugin/lsttokens/template/LevelTokenTest.java
===================================================================
--- branches/cdom/code/src/utest/plugin/lsttokens/template/LevelTokenTest.java 2007-09-29 18:37:52 UTC (rev 4182)
+++ branches/cdom/code/src/utest/plugin/lsttokens/template/LevelTokenTest.java 2007-09-29 18:38:20 UTC (rev 4183)
@@ -29,7 +29,7 @@
import pcgen.persistence.lst.LstObjectFileLoader;
import pcgen.persistence.lst.PCTemplateLoader;
import plugin.lsttokens.DrLst;
-import plugin.lsttokens.SaLst;
+import plugin.lsttokens.SabLst;
import plugin.lsttokens.SrLst;
import plugin.lsttokens.testsupport.AbstractTokenTestCase;
import plugin.lsttokens.testsupport.TokenRegistration;
@@ -52,7 +52,7 @@
TokenRegistration.register(new CrToken());
TokenRegistration.register(new DrLst());
TokenRegistration.register(new SrLst());
- TokenRegistration.register(new SaLst());
+ TokenRegistration.register(new SabLst());
classSetUpFired = true;
}
@@ -160,7 +160,7 @@
@Test
public void testInvalidInputEmptySA() throws PersistenceLayerException
{
- assertFalse(parse("3:SA:"));
+ assertFalse(parse("3:SAB:"));
assertNoSideEffects();
}
@@ -183,7 +183,7 @@
public void testInvalidInputEmptySANoColon()
throws PersistenceLayerException
{
- assertFalse(parse("3:SA"));
+ assertFalse(parse("3:SAB"));
assertNoSideEffects();
}
@@ -202,7 +202,7 @@
assertFalse(parse("3:D:1/+2"));
assertFalse(parse("3:CRA:3"));
assertFalse(parse("3:DRA:1/+2"));
- assertFalse(parse("3:SAA:Special"));
+ assertFalse(parse("3:SABA:Special"));
assertFalse(parse("3:SRA:1"));
assertNoSideEffects();
}
@@ -226,7 +226,7 @@
public void testInvalidInputBadHDRangePlus()
throws PersistenceLayerException
{
- assertFalse(parse("+3:SA:Special Abil"));
+ assertFalse(parse("+3:SAB:Special Abil"));
assertNoSideEffects();
}
@@ -234,7 +234,7 @@
public void testInvalidInputBadHDRangeMult()
throws PersistenceLayerException
{
- assertFalse(parse("*3:SA:Special Abil"));
+ assertFalse(parse("*3:SAB:Special Abil"));
assertNoSideEffects();
}
@@ -242,7 +242,7 @@
public void testInvalidInputBadHDRangeTwoDash()
throws PersistenceLayerException
{
- assertFalse(parse("1-3:SA:Special Abil"));
+ assertFalse(parse("1-3:SAB:Special Abil"));
assertNoSideEffects();
}
@@ -250,7 +250,7 @@
public void testInvalidInputBadHDRangeEndDash()
throws PersistenceLayerException
{
- assertFalse(parse("4-:SA:Special Abil"));
+ assertFalse(parse("4-:SAB:Special Abil"));
assertNoSideEffects();
}
@@ -258,7 +258,7 @@
public void testInvalidInputBadHDRangeEndPlus()
throws PersistenceLayerException
{
- assertFalse(parse("4+:SA:Special Abil"));
+ assertFalse(parse("4+:SAB:Special Abil"));
assertNoSideEffects();
}
@@ -266,7 +266,7 @@
public void testInvalidInputBadHDRangeUpTo()
throws PersistenceLayerException
{
- assertFalse(parse("-4:SA:Special Abil"));
+ assertFalse(parse("-4:SAB:Special Abil"));
assertNoSideEffects();
}
@@ -298,7 +298,7 @@
@Test
public void testRoundRobinSA() throws PersistenceLayerException
{
- runRoundRobin("5:SA:Special Ability, Man!");
+ runRoundRobin("5:SAB:Special Ability, Man!");
}
@Test
@@ -322,7 +322,7 @@
@Test
public void testRoundRobinMultipleSame() throws PersistenceLayerException
{
- runRoundRobin("4:CR:Formula", "4:SA:Special Ability, Man!");
+ runRoundRobin("4:CR:Formula", "4:SAB:Special Ability, Man!");
}
}
Modified: branches/cdom/code/src/utest/plugin/lsttokens/template/RepeatLevelTokenTest.java
===================================================================
--- branches/cdom/code/src/utest/plugin/lsttokens/template/RepeatLevelTokenTest.java 2007-09-29 18:37:52 UTC (rev 4182)
+++ branches/cdom/code/src/utest/plugin/lsttokens/template/RepeatLevelTokenTest.java 2007-09-29 18:38:20 UTC (rev 4183)
@@ -29,7 +29,7 @@
import pcgen.persistence.lst.LstObjectFileLoader;
import pcgen.persistence.lst.PCTemplateLoader;
import plugin.lsttokens.DrLst;
-import plugin.lsttokens.SaLst;
+import plugin.lsttokens.SabLst;
import plugin.lsttokens.SrLst;
import plugin.lsttokens.testsupport.AbstractTokenTestCase;
import plugin.lsttokens.testsupport.TokenRegistration;
@@ -51,7 +51,7 @@
TokenRegistration.register(new CrToken());
TokenRegistration.register(new DrLst());
TokenRegistration.register(new SrLst());
- TokenRegistration.register(new SaLst());
+ TokenRegistration.register(new SabLst());
classSetUpFired = true;
}
@@ -109,35 +109,35 @@
@Test
public void testInvalidEmptyStartLevel() throws PersistenceLayerException
{
- assertFalse(parse("1|2|20::SA:Stuff"));
+ assertFalse(parse("1|2|20::SAB:Stuff"));
assertNoSideEffects();
}
@Test
public void testInvalidBadStartLevel() throws PersistenceLayerException
{
- assertFalse(parse("1|2|20:StartLevel:SA:Stuff"));
+ assertFalse(parse("1|2|20:StartLevel:SAB:Stuff"));
assertNoSideEffects();
}
@Test
public void testInvalidBadIncrementLevel() throws PersistenceLayerException
{
- assertFalse(parse("IncrLevel|2|20:5:SA:Stuff"));
+ assertFalse(parse("IncrLevel|2|20:5:SAB:Stuff"));
assertNoSideEffects();
}
@Test
public void testInvalidBadSkipLevel() throws PersistenceLayerException
{
- assertFalse(parse("1|SkipLevel|20:5:SA:Stuff"));
+ assertFalse(parse("1|SkipLevel|20:5:SAB:Stuff"));
assertNoSideEffects();
}
@Test
public void testInvalidBadMaxLevel() throws PersistenceLayerException
{
- assertFalse(parse("1|2|MaxLevel:5:SA:Stuff"));
+ assertFalse(parse("1|2|MaxLevel:5:SAB:Stuff"));
assertNoSideEffects();
}
@@ -145,7 +145,7 @@
public void testInvalidNegativeStartLevel()
throws PersistenceLayerException
{
- assertFalse(parse("1|2|20:-4:SA:Stuff"));
+ assertFalse(parse("1|2|20:-4:SAB:Stuff"));
assertNoSideEffects();
}
@@ -153,21 +153,21 @@
public void testInvalidNegativeIncrementLevel()
throws PersistenceLayerException
{
- assertFalse(parse("-1|2|20:5:SA:Stuff"));
+ assertFalse(parse("-1|2|20:5:SAB:Stuff"));
assertNoSideEffects();
}
@Test
public void testInvalidNegativeSkipLevel() throws PersistenceLayerException
{
- assertFalse(parse("1|-2|20:5:SA:Stuff"));
+ assertFalse(parse("1|-2|20:5:SAB:Stuff"));
assertNoSideEffects();
}
@Test
public void testInvalidEmptyMaxLevel() throws PersistenceLayerException
{
- assertFalse(parse("1|2|:5:SA:Stuff"));
+ assertFalse(parse("1|2|:5:SAB:Stuff"));
assertNoSideEffects();
}
@@ -181,56 +181,56 @@
@Test
public void testInvalidNegativeMaxLevel() throws PersistenceLayerException
{
- assertFalse(parse("1|2|-5:5:SA:Stuff"));
+ assertFalse(parse("1|2|-5:5:SAB:Stuff"));
assertNoSideEffects();
}
@Test
public void testInvalidTooManyColons() throws PersistenceLayerException
{
- assertFalse(parse("1|2|20:4:5:SA:Stuff"));
+ assertFalse(parse("1|2|20:4:5:SAB:Stuff"));
assertNoSideEffects();
}
@Test
public void testInvalidTooManyBars() throws PersistenceLayerException
{
- assertFalse(parse("1|2|20|40:5:SA:Stuff"));
+ assertFalse(parse("1|2|20|40:5:SAB:Stuff"));
assertNoSideEffects();
}
@Test
public void testInvalidNoMaxLevel() throws PersistenceLayerException
{
- assertFalse(parse("1|2:5:SA:Stuff"));
+ assertFalse(parse("1|2:5:SAB:Stuff"));
assertNoSideEffects();
}
@Test
public void testInvalidNoFirstToken() throws PersistenceLayerException
{
- assertFalse(parse(":5:SA:Stuff"));
+ assertFalse(parse(":5:SAB:Stuff"));
assertNoSideEffects();
}
@Test
public void testInvalidNoSkipLevel() throws PersistenceLayerException
{
- assertFalse(parse("1||20:5:SA:Stuff"));
+ assertFalse(parse("1||20:5:SAB:Stuff"));
assertNoSideEffects();
}
@Test
public void testInvalidNoIncrementLevel() throws PersistenceLayerException
{
- assertFalse(parse("|3|20:5:SA:Stuff"));
+ assertFalse(parse("|3|20:5:SAB:Stuff"));
assertNoSideEffects();
}
@Test
public void testInvalidNoSubcommandArgs() throws PersistenceLayerException
{
- assertFalse(parse("1|2|20:5:SA:"));
+ assertFalse(parse("1|2|20:5:SAB:"));
assertNoSideEffects();
}
@@ -238,21 +238,21 @@
public void testInvalidStartGreaterThanEnd()
throws PersistenceLayerException
{
- assertFalse(parse("1|2|20:50:SA:Stuff"));
+ assertFalse(parse("1|2|20:50:SAB:Stuff"));
assertNoSideEffects();
}
@Test
public void testInvalidNoIncrement() throws PersistenceLayerException
{
- assertFalse(parse("10|2|20:15:SA:Stuff"));
+ assertFalse(parse("10|2|20:15:SAB:Stuff"));
assertNoSideEffects();
}
@Test
public void testInvalidNoSkipUse() throws PersistenceLayerException
{
- assertFalse(parse("5|4|20:5:SA:Stuff"));
+ assertFalse(parse("5|4|20:5:SAB:Stuff"));
assertNoSideEffects();
}
@@ -267,41 +267,41 @@
public void testRoundRobinZeroConsecutive()
throws PersistenceLayerException
{
- runRoundRobin("5|0|10:5:SA:Sample Spec Abil");
+ runRoundRobin("5|0|10:5:SAB:Sample Spec Abil");
}
@Test
public void testRoundRobinNoIncrementBorderCase()
throws PersistenceLayerException
{
- runRoundRobin("5|1|10:5:SA:Sample Spec Abil");
+ runRoundRobin("5|1|10:5:SAB:Sample Spec Abil");
}
@Test
public void testRoundRobinNoSkipBorderCase()
throws PersistenceLayerException
{
- runRoundRobin("5|3|20:5:SA:Sample Spec Abil");
+ runRoundRobin("5|3|20:5:SAB:Sample Spec Abil");
}
@Test
public void testRoundRobinSimple() throws PersistenceLayerException
{
- runRoundRobin("1|2|20:5:SA:Sample Spec Abil");
+ runRoundRobin("1|2|20:5:SAB:Sample Spec Abil");
}
@Test
public void testRoundRobinComplex() throws PersistenceLayerException
{
- runRoundRobin("1|2|20:5:SA:Sample Spec Abil",
- "2|4|20:5:SA:Sample Spec Abil");
+ runRoundRobin("1|2|20:5:SAB:Sample Spec Abil",
+ "2|4|20:5:SAB:Sample Spec Abil");
}
@Test
public void testRoundRobinMultipleSame() throws PersistenceLayerException
{
runRoundRobin("1|2|20:5:CR:Formula",
- "1|2|20:5:SA:Special Ability, Man!");
+ "1|2|20:5:SAB:Special Ability, Man!");
}
}
Modified: branches/cdom/code/testsuite/csheets/BarJack.xml
===================================================================
--- branches/cdom/code/testsuite/csheets/BarJack.xml 2007-09-29 18:37:52 UTC (rev 4182)
+++ branches/cdom/code/testsuite/csheets/BarJack.xml 2007-09-29 18:38:20 UTC (rev 4183)
@@ -44,7 +44,7 @@
<followeralignment></followeralignment>
<holyitem>None</holyitem>
<pantheonlist></pantheonlist>
- <source>Wizards of the Coast - System Reference Document, srdbasiccharacterclassesi.rtf</source>
+ <source>System Reference Document, srdbasiccharacterclassesi.rtf</source>
<special_abilities></special_abilities>
</deity>
<description>
@@ -1379,7 +1379,7 @@
</school>
<source>
<sourcelevel>Clr2, Drd2, Rgr1</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellss.rtf</source>
+ <source>System Reference Document, srdspellss.rtf</source>
<sourcepage>srdspellss.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -1407,7 +1407,7 @@
</school>
<source>
<sourcelevel>Brd0, Sor0, Wiz0</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsd.rtf</source>
+ <source>System Reference Document, srdspellsd.rtf</source>
<sourcepage>srdspellsd.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -1435,7 +1435,7 @@
</school>
<source>
<sourcelevel>Adp0, Asn1, Brd0, Sor0, Wiz0</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsg.rtf</source>
+ <source>System Reference Document, srdspellsg.rtf</source>
<sourcepage>srdspellsg.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -1463,7 +1463,7 @@
</school>
<source>
<sourcelevel>Brd0, Sor0, Wiz0</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsp.rtf</source>
+ <source>System Reference Document, srdspellsp.rtf</source>
<sourcepage>srdspellsp.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -1510,7 +1510,7 @@
</school>
<source>
<sourcelevel>Clr2, Drd2, Rgr1</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellss.rtf</source>
+ <source>System Reference Document, srdspellss.rtf</source>
<sourcepage>srdspellss.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -1538,7 +1538,7 @@
</school>
<source>
<sourcelevel>Brd0, Sor0, Wiz0</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsd.rtf</source>
+ <source>System Reference Document, srdspellsd.rtf</source>
<sourcepage>srdspellsd.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -1566,7 +1566,7 @@
</school>
<source>
<sourcelevel>Adp0, Asn1, Brd0, Sor0, Wiz0</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsg.rtf</source>
+ <source>System Reference Document, srdspellsg.rtf</source>
<sourcepage>srdspellsg.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -1594,7 +1594,7 @@
</school>
<source>
<sourcelevel>Brd0, Sor0, Wiz0</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsp.rtf</source>
+ <source>System Reference Document, srdspellsp.rtf</source>
<sourcepage>srdspellsp.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
Modified: branches/cdom/code/testsuite/csheets/BrdJoe.xml
===================================================================
--- branches/cdom/code/testsuite/csheets/BrdJoe.xml 2007-09-29 18:37:52 UTC (rev 4182)
+++ branches/cdom/code/testsuite/csheets/BrdJoe.xml 2007-09-29 18:38:20 UTC (rev 4183)
@@ -1207,7 +1207,7 @@
</school>
<source>
<sourcelevel>Brd0, Drd0, Sor0, Wiz0</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsf.rtf</source>
+ <source>System Reference Document, srdspellsf.rtf</source>
<sourcepage>srdspellsf.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -1235,7 +1235,7 @@
</school>
<source>
<sourcelevel>Adp0, Asn1, Brd0, Sor0, Wiz0</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsg.rtf</source>
+ <source>System Reference Document, srdspellsg.rtf</source>
<sourcepage>srdspellsg.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -1263,7 +1263,7 @@
</school>
<source>
<sourcelevel>Adp0, Brd0, Clr0, Drd0, Sor0, Wiz0</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsjkl.rtf</source>
+ <source>System Reference Document, srdspellsjkl.rtf</source>
<sourcepage>srdspellsjkl.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -1291,7 +1291,7 @@
</school>
<source>
<sourcelevel>Brd0, Sor0, Wiz0</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsm.rtf</source>
+ <source>System Reference Document, srdspellsm.rtf</source>
<sourcepage>srdspellsm.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
Modified: branches/cdom/code/testsuite/csheets/CleElf.xml
===================================================================
--- branches/cdom/code/testsuite/csheets/CleElf.xml 2007-09-29 18:37:52 UTC (rev 4182)
+++ branches/cdom/code/testsuite/csheets/CleElf.xml 2007-09-29 18:38:20 UTC (rev 4183)
@@ -44,7 +44,7 @@
<followeralignment></followeralignment>
<holyitem>None</holyitem>
<pantheonlist></pantheonlist>
- <source>Wizards of the Coast - System Reference Document, srdbasiccharacterclassesi.rtf</source>
+ <source>System Reference Document, srdbasiccharacterclassesi.rtf</source>
<special_abilities></special_abilities>
</deity>
<description>
@@ -1568,7 +1568,7 @@
</school>
<source>
<sourcelevel>Adp0, Clr0, Drd0, Pal1</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsc.rtf</source>
+ <source>System Reference Document, srdspellsc.rtf</source>
<sourcepage>srdspellsc.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -1596,7 +1596,7 @@
</school>
<source>
<sourcelevel>Adp0, Clr0, Drd0</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsc.rtf</source>
+ <source>System Reference Document, srdspellsc.rtf</source>
<sourcepage>srdspellsc.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -1624,7 +1624,7 @@
</school>
<source>
<sourcelevel>Adp0, Brd0, Clr0, Drd0, Sor0, Wiz0</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsd.rtf</source>
+ <source>System Reference Document, srdspellsd.rtf</source>
<sourcepage>srdspellsd.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -1652,7 +1652,7 @@
</school>
<source>
<sourcelevel>Asn1, Clr0, Drd0, Pal1, Sor0, Wiz0</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsd.rtf</source>
+ <source>System Reference Document, srdspellsd.rtf</source>
<sourcepage>srdspellsd.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -1680,7 +1680,7 @@
</school>
<source>
<sourcelevel>Adp0, Clr0, Drd0</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsg.rtf</source>
+ <source>System Reference Document, srdspellsg.rtf</source>
<sourcepage>srdspellsg.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -1708,7 +1708,7 @@
</school>
<source>
<sourcelevel>Clr0</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsi.rtf</source>
+ <source>System Reference Document, srdspellsi.rtf</source>
<sourcepage>srdspellsi.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -1736,7 +1736,7 @@
</school>
<source>
<sourcelevel>Adp0, Brd0, Clr0, Drd0, Sor0, Wiz0</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsjkl.rtf</source>
+ <source>System Reference Document, srdspellsjkl.rtf</source>
<sourcepage>srdspellsjkl.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -1764,7 +1764,7 @@
</school>
<source>
<sourcelevel>Adp0, Brd0, Clr0, Drd0, Sor0, Wiz0</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsm.rtf</source>
+ <source>System Reference Document, srdspellsm.rtf</source>
<sourcepage>srdspellsm.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -1792,7 +1792,7 @@
</school>
<source>
<sourcelevel>Adp0, Clr0, Drd0</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsp.rtf</source>
+ <source>System Reference Document, srdspellsp.rtf</source>
<sourcepage>srdspellsp.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -1820,7 +1820,7 @@
</school>
<source>
<sourcelevel>Adp0, Brd0, Clr0, Drd0, Pal1, Rgr1, Sor0, Wiz0</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsqr.rtf</source>
+ <source>System Reference Document, srdspellsqr.rtf</source>
<sourcepage>srdspellsqr.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -1848,7 +1848,7 @@
</school>
<source>
<sourcelevel>Brd0, Clr0, Drd0, Pal1, Sor0, Wiz0</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsqr.rtf</source>
+ <source>System Reference Document, srdspellsqr.rtf</source>
<sourcepage>srdspellsqr.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -1876,7 +1876,7 @@
</school>
<source>
<sourcelevel>Clr0, Drd0, Pal1</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsuvwxyz.rtf</source>
+ <source>System Reference Document, srdspellsuvwxyz.rtf</source>
<sourcepage>srdspellsuvwxyz.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -1906,7 +1906,7 @@
</school>
<source>
<sourcelevel>Clr1</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsb.rtf</source>
+ <source>System Reference Document, srdspellsb.rtf</source>
<sourcepage>srdspellsb.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -1934,7 +1934,7 @@
</school>
<source>
<sourcelevel>Clr1, Pal1</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsb.rtf</source>
+ <source>System Reference Document, srdspellsb.rtf</source>
<sourcepage>srdspellsb.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -1962,7 +1962,7 @@
</school>
<source>
<sourcelevel>Clr1, Pal1</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsb.rtf</source>
+ <source>System Reference Document, srdspellsb.rtf</source>
<sourcepage>srdspellsb.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -1990,7 +1990,7 @@
</school>
<source>
<sourcelevel>Adp1, Bgd1, Brd1, Clr1, Death1, Sor1, Wiz1</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsc.rtf</source>
+ <source>System Reference Document, srdspellsc.rtf</source>
<sourcepage>srdspellsc.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -2018,7 +2018,7 @@
</school>
<source>
<sourcelevel>Adp1, Clr1</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsc.rtf</source>
+ <source>System Reference Document, srdspellsc.rtf</source>
<sourcepage>srdspellsc.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -2046,7 +2046,7 @@
</school>
<source>
<sourcelevel>Adp1, Clr1, Sor1, Wiz1</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsc.rtf</source>
+ <source>System Reference Document, srdspellsc.rtf</source>
<sourcepage>srdspellsc.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -2074,7 +2074,7 @@
</school>
<source>
<sourcelevel>Adp1, Bgd1, Brd1, Clr1, Drd1, Healing1, Pal1, Rgr2</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsc.rtf</source>
+ <source>System Reference Document, srdspellsc.rtf</source>
<sourcepage>srdspellsc.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -2102,7 +2102,7 @@
</school>
<source>
<sourcelevel>Clr1</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsd.rtf</source>
+ <source>System Reference Document, srdspellsd.rtf</source>
<sourcepage>srdspellsd.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -2130,7 +2130,7 @@
</school>
<source>
<sourcelevel>Adp1, Clr1, Rgr2</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsd.rtf</source>
+ <source>System Reference Document, srdspellsd.rtf</source>
<sourcepage>srdspellsd.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -2158,7 +2158,7 @@
</school>
<source>
<sourcelevel>Adp1, Clr1, Rgr2</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsd.rtf</source>
+ <source>System Reference Document, srdspellsd.rtf</source>
<sourcepage>srdspellsd.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -2186,7 +2186,7 @@
</school>
<source>
<sourcelevel>Adp1, Clr1, Rgr2</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsd.rtf</source>
+ <source>System Reference Document, srdspellsd.rtf</source>
<sourcepage>srdspellsd.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -2214,7 +2214,7 @@
</school>
<source>
<sourcelevel>Adp1, Clr1, Rgr2</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsd.rtf</source>
+ <source>System Reference Document, srdspellsd.rtf</source>
<sourcepage>srdspellsd.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -2242,7 +2242,7 @@
</school>
<source>
<sourcelevel>Clr1, Pal1, Sor1, Wiz1</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsd.rtf</source>
+ <source>System Reference Document, srdspellsd.rtf</source>
<sourcepage>srdspellsd.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -2270,7 +2270,7 @@
</school>
<source>
<sourcelevel>Clr1, Pal1</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsd.rtf</source>
+ <source>System Reference Document, srdspellsd.rtf</source>
<sourcepage>srdspellsd.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -2298,7 +2298,7 @@
</school>
<source>
<sourcelevel>Bgd1, Clr1</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsd.rtf</source>
+ <source>System Reference Document, srdspellsd.rtf</source>
<sourcepage>srdspellsd.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -2326,7 +2326,7 @@
</school>
<source>
<sourcelevel>Adp1, Clr1, Drd1, Pal1, Sor1, Strength1, Sun1, Wiz1</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellse.rtf</source>
+ <source>System Reference Document, srdspellse.rtf</source>
<sourcepage>srdspellse.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -2354,7 +2354,7 @@
</school>
<source>
<sourcelevel>Clr1, Luck1</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellse.rtf</source>
+ <source>System Reference Document, srdspellse.rtf</source>
<sourcepage>srdspellse.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -2382,7 +2382,7 @@
</school>
<source>
<sourcelevel>Bgd1, Clr1, Destruction1</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsi.rtf</source>
+ <source>System Reference Document, srdspellsi.rtf</source>
<sourcepage>srdspellsi.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -2410,7 +2410,7 @@
</school>
<source>
<sourcelevel>Clr1</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsi.rtf</source>
+ <source>System Reference Document, srdspellsi.rtf</source>
<sourcepage>srdspellsi.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -2438,7 +2438,7 @@
</school>
<source>
<sourcelevel>Clr1, Earth1</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsm.rtf</source>
+ <source>System Reference Document, srdspellsm.rtf</source>
<sourcepage>srdspellsm.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -2466,7 +2466,7 @@
</school>
<source>
<sourcelevel>Bgd1, Brd1, Clr1, Pal1, Sor1, War1, Wiz1</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsm.rtf</source>
+ <source>System Reference Document, srdspellsm.rtf</source>
<sourcepage>srdspellsm.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -2494,7 +2494,7 @@
</school>
<source>
<sourcelevel>Adp1, Air1, Asn1, Clr1, Drd1, Sor1, Water1, Wiz1</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsno.rtf</source>
+ <source>System Reference Document, srdspellsno.rtf</source>
<sourcepage>srdspellsno.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -2522,7 +2522,7 @@
</school>
<source>
<sourcelevel>Adp1, Brd1, Clr1, Law1, Sor1, Wiz1</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsp.rtf</source>
+ <source>System Reference Document, srdspellsp.rtf</source>
<sourcepage>srdspellsp.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -2550,7 +2550,7 @@
</school>
<source>
<sourcelevel>Adp1, Brd1, Clr1, Law1, Sor1, Wiz1</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsp.rtf</source>
+ <source>System Reference Document, srdspellsp.rtf</source>
<sourcepage>srdspellsp.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -2578,7 +2578,7 @@
</school>
<source>
<sourcelevel>Adp1, Brd1, Clr1, Good1, Pal1, Sor1, Wiz1</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsp.rtf</source>
+ <source>System Reference Document, srdspellsp.rtf</source>
<sourcepage>srdspellsp.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -2606,7 +2606,7 @@
</school>
<source>
<sourcelevel>Clr1</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsqr.rtf</source>
+ <source>System Reference Document, srdspellsqr.rtf</source>
<sourcepage>srdspellsqr.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -2634,7 +2634,7 @@
</school>
<source>
<sourcelevel>Clr1</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellsqr.rtf</source>
+ <source>System Reference Document, srdspellsqr.rtf</source>
<sourcepage>srdspellsqr.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -2662,7 +2662,7 @@
</school>
<source>
<sourcelevel>Clr1, Protection1</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellss.rtf</source>
+ <source>System Reference Document, srdspellss.rtf</source>
<sourcepage>srdspellss.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -2690,7 +2690,7 @@
</school>
<source>
<sourcelevel>Clr1, Protection1</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellss.rtf</source>
+ <source>System Reference Document, srdspellss.rtf</source>
<sourcepage>srdspellss.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -2718,7 +2718,7 @@
</school>
<source>
<sourcelevel>Clr1</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellss.rtf</source>
+ <source>System Reference Document, srdspellss.rtf</source>
<sourcepage>srdspellss.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
@@ -2746,7 +2746,7 @@
</school>
<source>
<sourcelevel>Bgd1, Brd1, Clr1, Sor1, Wiz1</sourcelevel>
- <source>Wizards of the Coast - System Reference Document, srdspellss.rtf</source>
+ <source>System Reference Document, srdspellss.rtf</source>
<sourcepage>srdspellss.rtf</sourcepage>
<sourceshort>SRD</sourceshort>
</source>
Modified: branches/cdom/code/testsuite/csheets/CloudGiantHalfDragon.xml
===================================================================
--- branches/cdom/code/testsuite/csheets/CloudGiantHalfDragon.xml 2007-09-29 18:37:52 UTC (rev 4182)
+++ branches/cdom/code/testsuite/csheets/CloudGiantHalfDragon.xml 2007-09-29 18:38:20 UTC (rev 4183)
@@ -1519,7 +1519,7 @@
</school>
<source>
<sourcelevel>Drd2, Sor2, Water2, Wiz2</sourcelevel>
- <source>Wizards of the Coast - Revised (v.3.5) System Reference Document, SpellsF-G.rtf</source>
+ <source>Revised (v.3.5) System Reference Document, SpellsF-G.rtf</source>
<sourcepage>SpellsF-G.rtf</sourcepage>
<sourceshort>RSRD</sourceshort>
</source>
@@ -1547,7 +1547,7 @@
</school>
<source>
<sourcelevel></sourcelevel>
- <source>Wizards of the Coast - Revised (v.3.5) System Reference Document, SpellsH-L.rtf</source>
+ <source>Revised (v.3.5) System Reference Document, SpellsH-L.rtf</source>
<sourcepage>SpellsH-L.rtf</sourcepage>
<sourceshort>RSRD</sourceshort>
</source>
@@ -1575,7 +1575,7 @@
</school>
<source>
<sourcelevel>Adp1, Air1, Asn1, Clr1, Drd1, Sor1, Water1, Wiz1</sourcelevel>
- <source>Wizards of the Coast - Revised (v.3.5) System Reference Document, SpellsM-O.rtf</source>
+ <source>Revised (v.3.5) System Reference Document, SpellsM-O.rtf</source>
<sourcepage>SpellsM-O.rtf</sourcepage>
<sourceshort>RSRD</sourceshort>
</source>
@@ -1622,7 +1622,7 @@
</school>
<source>
<sourcelevel>Drd2, Sor2, Water2, Wiz2</sourcelevel>
- <source>Wizards of the Coast - Revised (v.3.5) System Reference Document, SpellsF-G.rtf</source>
+ <source>Revised (v.3.5) System Reference Document, SpellsF-G.rtf</source>
<sourcepage>SpellsF-G.rtf</sourcepage>
<sourceshort>RSRD</sourceshort>
</source>
@@ -1650,7 +1650,7 @@
</school>
<source>
<sourcelevel></sourcelevel>
- <source>Wizards of the Coast - Revised (v.3.5) System Reference Document, SpellsH-L.rtf</source>
+ ...
[truncated message content] |
|
From: <th...@us...> - 2007-09-29 19:34:53
|
Revision: 4179
http://pcgen.svn.sourceforge.net/pcgen/?rev=4179&view=rev
Author: thpr
Date: 2007-09-29 11:36:05 -0700 (Sat, 29 Sep 2007)
Log Message:
-----------
Bring CDOM up to 4173
Modified Paths:
--------------
branches/cdom/code/src/java/plugin/doomsdaybook/gui/NameGenPanel.java
branches/cdom/code/src/java/plugin/exporttokens/ClassToken.java
branches/cdom/code/src/java/plugin/exporttokens/DeityToken.java
branches/cdom/code/src/java/plugin/exporttokens/RaceToken.java
branches/cdom/code/src/java/plugin/exporttokens/TemplateToken.java
branches/cdom/code/src/java/plugin/exporttokens/TextToken.java
branches/cdom/code/src/java/plugin/pretokens/test/PreAbilityTester.java
branches/cdom/code/src/java/plugin/pretokens/test/PreSpecialAbilityTester.java
Modified: branches/cdom/code/src/java/plugin/doomsdaybook/gui/NameGenPanel.java
===================================================================
--- branches/cdom/code/src/java/plugin/doomsdaybook/gui/NameGenPanel.java 2007-09-29 18:17:59 UTC (rev 4178)
+++ branches/cdom/code/src/java/plugin/doomsdaybook/gui/NameGenPanel.java 2007-09-29 18:36:05 UTC (rev 4179)
@@ -79,6 +79,8 @@
private JSeparator jSeparator4;
private JTextField name;
private VariableHashMap allVars = new VariableHashMap();
+
+ private Rule lastRule = null;
/** Creates new form NameGenPanel */
public NameGenPanel()
@@ -104,18 +106,18 @@
{
try
{
+ Rule rule = null;
+
if (chkStructure.isSelected())
{
RuleSet rs = (RuleSet) cbCatalog.getSelectedItem();
- Rule rule = rs.getRule();
- ArrayList<DataValue> aName = rule.getData();
- setNameText(aName);
- setMeaningText(aName);
- setPronounciationText(aName);
-
- return rule;
+ rule = rs.getRule();
}
- Rule rule = (Rule) cbStructure.getSelectedItem();
+ else
+ {
+ rule = (Rule) cbStructure.getSelectedItem();
+ }
+
ArrayList<DataValue> aName = rule.getData();
setNameText(aName);
setMeaningText(aName);
@@ -227,10 +229,26 @@
NameButton nb = (NameButton) evt.getSource();
DataElement element = nb.getDataElement();
element.getData();
+
+ Rule rule = this.lastRule;
+
+ if( rule == null)
+ {
+ if (chkStructure.isSelected())
+ {
+ RuleSet rs = (RuleSet) cbCatalog.getSelectedItem();
+ rule = rs.getLastRule();
+ }
+ else
+ {
+ rule = (Rule) cbStructure.getSelectedItem();
+ }
+
+ this.lastRule = rule;
+ }
- RuleSet rs = (RuleSet) cbCatalog.getSelectedItem();
- Rule rule = rs.getLastRule();
ArrayList<DataValue> aName = rule.getLastData();
+
setNameText(aName);
setMeaningText(aName);
setPronounciationText(aName);
@@ -244,14 +262,22 @@
private void cbCatalogActionPerformed(ActionEvent evt)
{ //GEN-FIRST:event_cbCatalogActionPerformed
loadStructureDD();
+ this.clearButtons();
}
-
//GEN-LAST:event_cbCatalogActionPerformed
+ private void cbStructureActionPerformed(ActionEvent evt)
+ { //GEN-FIRST:event_cbStructureActionPerformed
+ this.clearButtons();
+ }
+ //GEN-LAST:event_cbStructureActionPerformed
+
private void cbCategoryActionPerformed(ActionEvent evt)
{ //GEN-FIRST:event_cbCategoryActionPerformed
+ this.loadGenderDD();
loadCatalogDD();
loadStructureDD();
+ this.clearButtons();
}
//GEN-LAST:event_cbCategoryActionPerformed
@@ -260,6 +286,7 @@
{ //GEN-FIRST:event_cbSexActionPerformed
loadCatalogDD();
loadStructureDD();
+ this.clearButtons();
}
//GEN-LAST:event_cbSexActionPerformed
@@ -314,8 +341,8 @@
try
{
- Rule rule = generate();
- displayButtons(rule);
+ this.lastRule = generate();
+ displayButtons(this.lastRule);
}
catch (Exception e)
{
@@ -461,6 +488,13 @@
jPanel12.add(jLabel6);
cbStructure.setEnabled(false);
+ cbStructure.addActionListener(new ActionListener()
+ {
+ public void actionPerformed(ActionEvent evt)
+ {
+ cbStructureActionPerformed(evt);
+ }
+ });
jPanel12.add(cbStructure);
chkStructure.setSelected(true);
@@ -558,7 +592,7 @@
String sexKey = (String) cbSex.getSelectedItem();
RuleSet oldRS = (RuleSet) cbCatalog.getSelectedItem();
String catalogKey = "";
-
+
if (oldRS != null)
{
catalogKey = oldRS.getTitle();
@@ -596,14 +630,79 @@
DefaultComboBoxModel catalogModel =
new DefaultComboBoxModel(catalogs);
cbCatalog.setModel(catalogModel);
- cbCatalog.setSelectedIndex(oldSelected);
}
catch (Exception e)
{
Logging.errorPrint(e.getMessage(), e);
}
}
+
+ // Get a list of all the gender categories in the category map
+ private Vector<String> getGenderCategoryNames()
+ {
+ Vector<String> genders = new java.util.Vector<String>();
+ Set<String> keySet = categories.keySet();
+ Iterator<String> itr = keySet.iterator();
+ // Loop through the keys in the categories
+ while (itr.hasNext())
+ {
+ String key = itr.next();
+
+ // if the key starts with "Sex" then save it
+ if (key.startsWith("Sex:"))
+ {
+ genders.add(key.substring(5));
+ }
+ }
+
+ // Return all the found gender types
+ return genders;
+ }
+
+ // Load the gender drop dowd
+ private void loadGenderDD()
+ {
+ Vector<String> genders = getGenderCategoryNames();
+ Vector<String> selectable = new Vector<String>();
+
+ // Get the selected category name
+ String category = (String) cbCategory.getSelectedItem();
+
+ // Get the set of rules for selected category
+ List<RuleSet> categoryRules = categories.get(category);
+
+ // we need to determine if the selected category is supported by the
+ // available genders
+ // loop through the available genders
+ for( int i = 0; i < genders.size(); ++i )
+ {
+ String gender = genders.get(i);
+
+ // Get the list of rules for the current gender
+ List<RuleSet> genderRules = categories.get("Sex: " + gender);
+
+ // now loop through all the rules from the selected category
+ for( int j = 0; j < categoryRules.size(); ++j )
+ {
+ // if the category rule is in the list of gender rules
+ // add the current gender to the selectable gender list
+ // we can stop processing the list once we find a match
+ if( genderRules.contains(categoryRules.get(j)))
+ {
+ selectable.add(gender);
+ break;
+ }
+ }
+ }
+
+ // Sort the genders
+ Collections.sort(selectable);
+
+ // Create a new model for the combobox and set it
+ cbSex.setModel(new DefaultComboBoxModel(selectable));
+ }
+
private void loadCategory(Element category, RuleSet rs)
{
List<RuleSet> cat = categories.get(category.getAttributeValue("title"));
@@ -661,10 +760,10 @@
}
}
- private void loadDropdowns()
+ // Get a list of category names from the categories map
+ private Vector<String> getCategoryNames()
{
Vector<String> cats = new java.util.Vector<String>();
- Vector<String> sexes = new java.util.Vector<String>();
Set<String> keySet = categories.keySet();
Iterator<String> itr = keySet.iterator();
@@ -672,26 +771,31 @@
{
String key = itr.next();
+ // Ignore any category that starts with this
if (key.startsWith("Sex:"))
{
- sexes.add(key.substring(5));
+ continue;
}
- else
- {
- cats.add(key);
- }
+
+ cats.add(key);
}
+ // Sor the selected categories before returning it
Collections.sort(cats);
- Collections.sort(sexes);
-
- DefaultComboBoxModel catModel = new DefaultComboBoxModel(cats);
- DefaultComboBoxModel sexModel = new DefaultComboBoxModel(sexes);
- cbCategory.setModel(catModel);
- cbSex.setModel(sexModel);
-
- loadCatalogDD();
+
+ return cats;
}
+
+ private void loadDropdowns()
+ {
+ // This method now just loads the category dropdown from the list of
+ // category names
+ Vector<String> cats = this.getCategoryNames();
+ cbCategory.setModel(new DefaultComboBoxModel(cats));
+
+ this.loadGenderDD();
+ this.loadCatalogDD();
+ }
private void loadFromDocument(Document nameSet)
throws DataConversionException
Modified: branches/cdom/code/src/java/plugin/exporttokens/ClassToken.java
===================================================================
--- branches/cdom/code/src/java/plugin/exporttokens/ClassToken.java 2007-09-29 18:17:59 UTC (rev 4178)
+++ branches/cdom/code/src/java/plugin/exporttokens/ClassToken.java 2007-09-29 18:36:05 UTC (rev 4179)
@@ -25,19 +25,18 @@
*/
package plugin.exporttokens;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.StringTokenizer;
+
import pcgen.core.Constants;
import pcgen.core.PCClass;
import pcgen.core.PlayerCharacter;
import pcgen.core.SpecialAbility;
import pcgen.core.utils.CoreUtility;
-import pcgen.core.utils.ListKey;
import pcgen.io.ExportHandler;
import pcgen.io.exporttoken.Token;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.StringTokenizer;
-
/**
* Deal with tokens below CLASS.x CLASS.x.LEVEL CLASS.x.SALIST
*/
@@ -161,34 +160,21 @@
*/
public static List<String> getClassSpecialAbilityList(PCClass pcclass,
final PlayerCharacter aPC) {
- final List<String> aList = new ArrayList<String>();
final List<String> formattedList = new ArrayList<String>();
- final List<SpecialAbility> abilityList = pcclass
- .getListFor(ListKey.SPECIAL_ABILITY);
+
+ final List<SpecialAbility> saList = new ArrayList<SpecialAbility>();
+ pcclass.addSpecialAbilitiesToList(saList, aPC);
+ pcclass.addSABToList(saList, aPC);
- // Determine the list of abilities from this class
- // that the character is eligible for
- if (abilityList == null || abilityList.isEmpty()) {
- return aList;
+ if (saList.isEmpty())
+ {
+ return formattedList;
}
- for (SpecialAbility saAbility : abilityList) {
- final String aString = saAbility.toString();
-
- // If we've already added the special ability, don't add it again
- if (aList.contains(aString)) {
- break;
- }
-
- // If the PC qualifies for the special ability, then add it
- if (saAbility.pcQualifiesFor(aPC)) {
- aList.add(aString);
- }
- }
-
// From the list of allowed SAs, format the output strings
// to include all of the variables
- for (String str : aList) {
+ for (SpecialAbility sa : saList) {
+ String str = sa.getDisplayName();
if (str == null || str.length() == 0)
{
continue;
Modified: branches/cdom/code/src/java/plugin/exporttokens/DeityToken.java
===================================================================
--- branches/cdom/code/src/java/plugin/exporttokens/DeityToken.java 2007-09-29 18:17:59 UTC (rev 4178)
+++ branches/cdom/code/src/java/plugin/exporttokens/DeityToken.java 2007-09-29 18:36:05 UTC (rev 4179)
@@ -25,16 +25,19 @@
*/
package plugin.exporttokens;
+import pcgen.core.Constants;
import pcgen.core.Deity;
import pcgen.core.Domain;
import pcgen.core.PlayerCharacter;
import pcgen.core.QualifiedObject;
import pcgen.core.SettingsHandler;
+import pcgen.core.SpecialAbility;
import pcgen.core.utils.CoreUtility;
-import pcgen.core.utils.ListKey;
import pcgen.io.ExportHandler;
import pcgen.io.exporttoken.Token;
+import java.util.ArrayList;
+import java.util.List;
import java.util.StringTokenizer;
/**
@@ -63,6 +66,7 @@
/**
* @see pcgen.io.exporttoken.Token#getTokenName()
*/
+ @Override
public String getTokenName()
{
return TOKENNAME;
@@ -71,6 +75,7 @@
/**
* @see pcgen.io.exporttoken.Token#getToken(java.lang.String, pcgen.core.PlayerCharacter, pcgen.io.ExportHandler)
*/
+ @Override
public String getToken(String tokenSource, PlayerCharacter pc,
ExportHandler eh)
{
@@ -134,7 +139,7 @@
}
else if ("SA".equals(subTag))
{
- retString = getSAToken(deity);
+ retString = getSAToken(deity, pc);
}
else if ("TITLE".equals(subTag))
{
@@ -287,15 +292,32 @@
* @param deity
* @return the SA sub token
*/
- public static String getSAToken(Deity deity)
+ public static String getSAToken(Deity deity, PlayerCharacter pc)
{
- if (deity.containsListFor(ListKey.SPECIAL_ABILITY))
+ final List<SpecialAbility> saList = new ArrayList<SpecialAbility>();
+ deity.addSpecialAbilitiesToList(saList, pc);
+ deity.addSABToList(saList, pc);
+
+ if (saList.isEmpty())
{
- return CoreUtility.join(deity.getListFor(ListKey.SPECIAL_ABILITY),
- ", ");
+ return Constants.EMPTY_STRING;
}
- return "";
+ StringBuffer returnString = new StringBuffer();
+ boolean firstLine = true;
+ for (SpecialAbility sa : saList)
+ {
+ if (!firstLine)
+ {
+ returnString.append(", "); //$NON-NLS-1$
+ }
+
+ firstLine = false;
+
+ returnString.append(sa.getDisplayName());
+ }
+
+ return returnString.toString();
}
/**
Modified: branches/cdom/code/src/java/plugin/exporttokens/RaceToken.java
===================================================================
--- branches/cdom/code/src/java/plugin/exporttokens/RaceToken.java 2007-09-29 18:17:59 UTC (rev 4178)
+++ branches/cdom/code/src/java/plugin/exporttokens/RaceToken.java 2007-09-29 18:36:05 UTC (rev 4179)
@@ -25,14 +25,18 @@
*/
package plugin.exporttokens;
-import pcgen.core.*;
-import pcgen.core.utils.ListKey;
+import java.util.ArrayList;
+import java.util.List;
+
+import pcgen.core.Constants;
+import pcgen.core.PCClass;
+import pcgen.core.PlayerCharacter;
+import pcgen.core.SettingsHandler;
+import pcgen.core.SpecialAbility;
import pcgen.io.ExportHandler;
import pcgen.io.exporttoken.Token;
import pcgen.util.PropertyFactory;
-import java.util.List;
-
/**
* This class implements support for the RACE set of tokens.
* RACE - Displays characters race.
@@ -90,10 +94,12 @@
{
return Constants.EMPTY_STRING;
}
- final List<SpecialAbility> saList =
- pc.getRace().getListFor(ListKey.SPECIAL_ABILITY);
+
+ final List<SpecialAbility> saList = new ArrayList<SpecialAbility>();
+ pc.getRace().addSpecialAbilitiesToList(saList, pc);
+ pc.getRace().addSABToList(saList, pc);
- if ((saList == null) || saList.isEmpty())
+ if (saList.isEmpty())
{
return Constants.EMPTY_STRING;
}
Modified: branches/cdom/code/src/java/plugin/exporttokens/TemplateToken.java
===================================================================
--- branches/cdom/code/src/java/plugin/exporttokens/TemplateToken.java 2007-09-29 18:17:59 UTC (rev 4178)
+++ branches/cdom/code/src/java/plugin/exporttokens/TemplateToken.java 2007-09-29 18:36:05 UTC (rev 4179)
@@ -25,6 +25,10 @@
*/
package plugin.exporttokens;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.StringTokenizer;
+
import pcgen.core.PCTemplate;
import pcgen.core.PlayerCharacter;
import pcgen.core.SettingsHandler;
@@ -33,9 +37,6 @@
import pcgen.io.ExportHandler;
import pcgen.io.exporttoken.Token;
-import java.util.List;
-import java.util.StringTokenizer;
-
/**
* Deals with returning the values for the TEMPALTE Token
* and it's Sub Tokens
@@ -58,6 +59,7 @@
/**
* @see pcgen.io.exporttoken.Token#getTokenName()
*/
+ @Override
public String getTokenName()
{
return TOKENNAME;
@@ -66,6 +68,7 @@
/**
* @see pcgen.io.exporttoken.Token#getToken(java.lang.String, pcgen.core.PlayerCharacter, pcgen.io.ExportHandler)
*/
+ @Override
public String getToken(String tokenSource, PlayerCharacter pc,
ExportHandler eh)
{
@@ -222,9 +225,9 @@
*/
public static String getSAToken(PCTemplate template, PlayerCharacter pc)
{
- List<SpecialAbility> saList =
- template.getSpecialAbilityList(pc.getTotalLevels(), pc
- .totalHitDice());
+ List<SpecialAbility> saList = new ArrayList<SpecialAbility>();
+ template.addSpecialAbilitiesToList(saList, pc);
+ template.addSABToList(saList, pc);
return CoreUtility.join(saList, ", ");
}
Modified: branches/cdom/code/src/java/plugin/exporttokens/TextToken.java
===================================================================
--- branches/cdom/code/src/java/plugin/exporttokens/TextToken.java 2007-09-29 18:17:59 UTC (rev 4178)
+++ branches/cdom/code/src/java/plugin/exporttokens/TextToken.java 2007-09-29 18:36:05 UTC (rev 4179)
@@ -139,25 +139,23 @@
{
final String replaceType = action.substring(7,action.indexOf('{'));
String args = action.substring(action.indexOf('{')+1, action.length()-1);
- int patternEnd = -1;
- String temp = args;
+ int patternEnd = 0;
+
for ( ; ; )
{
- patternEnd = temp.indexOf(',');
- if (patternEnd == -1)
+ patternEnd = args.indexOf(',', patternEnd);
+ if (patternEnd <= 0)
{
break;
}
- if (temp.charAt(patternEnd - 1) != '\\')
+ if (args.charAt(patternEnd - 1) != '\\')
{
break;
}
- else
- {
- temp = temp.substring(patternEnd+1);
- }
+ String temp = args.substring(0, patternEnd - 1);
+ args = temp + args.substring(patternEnd, args.length());
}
- if (patternEnd == -1)
+ if (patternEnd <= 0)
{
Logging.errorPrint("Invalid REPLACE token");
}
Modified: branches/cdom/code/src/java/plugin/pretokens/test/PreAbilityTester.java
===================================================================
--- branches/cdom/code/src/java/plugin/pretokens/test/PreAbilityTester.java 2007-09-29 18:17:59 UTC (rev 4178)
+++ branches/cdom/code/src/java/plugin/pretokens/test/PreAbilityTester.java 2007-09-29 18:36:05 UTC (rev 4179)
@@ -292,10 +292,9 @@
final List<Ability> abilityList = new ArrayList<Ability>();
if (character != null)
{
+ Collection<AbilityCategory> allCats = SettingsHandler.getGame().getAllAbilityCategories();
if (categoryName == null)
{
- Collection<AbilityCategory> allCats =
- SettingsHandler.getGame().getAllAbilityCategories();
for (AbilityCategory aCat : allCats)
{
abilityList.addAll(character.getAggregateAbilityList(aCat));
@@ -303,7 +302,13 @@
}
else
{
- abilityList.addAll(character.getAggregateAbilityList(category));
+ for (AbilityCategory aCat : allCats)
+ {
+ if (aCat.getAbilityCategory().equals(category.getKeyName()))
+ {
+ abilityList.addAll(character.getAggregateAbilityList(aCat));
+ }
+ }
}
}
return abilityList;
Modified: branches/cdom/code/src/java/plugin/pretokens/test/PreSpecialAbilityTester.java
===================================================================
--- branches/cdom/code/src/java/plugin/pretokens/test/PreSpecialAbilityTester.java 2007-09-29 18:17:59 UTC (rev 4178)
+++ branches/cdom/code/src/java/plugin/pretokens/test/PreSpecialAbilityTester.java 2007-09-29 18:36:05 UTC (rev 4179)
@@ -26,8 +26,9 @@
*/
package plugin.pretokens.test;
+import java.util.List;
+
import pcgen.cdom.graph.PCGenGraph;
-import pcgen.core.PCTemplate;
import pcgen.core.PlayerCharacter;
import pcgen.core.SpecialAbility;
import pcgen.core.prereq.AbstractPrerequisiteTest;
@@ -36,8 +37,6 @@
import pcgen.core.prereq.PrerequisiteTest;
import pcgen.util.PropertyFactory;
-import java.util.List;
-
/**
* @author wardc
*
@@ -74,27 +73,6 @@
}
}
- //
- // Now check any templates
- //
- for (PCTemplate aTempl : character.getTemplateList())
- {
- final List<SpecialAbility> saList =
- aTempl.getSpecialAbilityList(character.getTotalLevels(),
- character.totalHitDice());
-
- if (saList != null)
- {
- for (SpecialAbility sa : saList)
- {
- if (sa.getKeyName().toUpperCase().startsWith(aString))
- {
- runningTotal++;
- }
- }
- }
- }
-
runningTotal = prereq.getOperator().compare(runningTotal, number);
return countedTotal(prereq, runningTotal);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <th...@us...> - 2007-09-29 18:46:27
|
Revision: 4180
http://pcgen.svn.sourceforge.net/pcgen/?rev=4180&view=rev
Author: thpr
Date: 2007-09-29 11:36:32 -0700 (Sat, 29 Sep 2007)
Log Message:
-----------
Bring CDOM up to 4173
Modified Paths:
--------------
branches/cdom/code/src/java/plugin/lsttokens/gamemode/abilitycategory/VisibleToken.java
branches/cdom/code/src/java/plugin/lsttokens/pcclass/KnownspellsToken.java
branches/cdom/code/src/java/plugin/lsttokens/pcclass/SpelllistToken.java
branches/cdom/code/src/java/plugin/lsttokens/pcclass/VfeatToken.java
Added Paths:
-----------
branches/cdom/code/src/java/plugin/lsttokens/SabLst.java
branches/cdom/code/src/java/plugin/lsttokens/choose/StringToken.java
branches/cdom/code/src/java/plugin/lsttokens/gamemode/PreviewDirToken.java
branches/cdom/code/src/java/plugin/lsttokens/gamemode/PreviewSheetToken.java
branches/cdom/code/src/java/plugin/lsttokens/gamemode/abilitycategory/DisplayLocationToken.java
Removed Paths:
-------------
branches/cdom/code/src/java/plugin/lsttokens/SaLst.java
branches/cdom/code/src/java/plugin/lsttokens/choose/EqBuilderToken.java
Deleted: branches/cdom/code/src/java/plugin/lsttokens/SaLst.java
===================================================================
--- branches/cdom/code/src/java/plugin/lsttokens/SaLst.java 2007-09-29 18:36:05 UTC (rev 4179)
+++ branches/cdom/code/src/java/plugin/lsttokens/SaLst.java 2007-09-29 18:36:32 UTC (rev 4180)
@@ -1,338 +0,0 @@
-/*
- * Copyright 2006-2007 (C) Tom Parker <th...@us...>
- * Copyright 2005-2006 (C) Devon Jones
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * Current Ver: $Revision$
- * Last Editor: $Author$
- * Last Edited: $Date$
- */
-package plugin.lsttokens;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.StringTokenizer;
-
-import pcgen.cdom.base.CDOMObject;
-import pcgen.cdom.base.Constants;
-import pcgen.cdom.base.LSTWriteable;
-import pcgen.core.Globals;
-import pcgen.core.PCClass;
-import pcgen.core.PObject;
-import pcgen.core.Skill;
-import pcgen.core.SpecialAbility;
-import pcgen.core.prereq.Prerequisite;
-import pcgen.persistence.AssociatedChanges;
-import pcgen.persistence.LoadContext;
-import pcgen.persistence.PersistenceLayerException;
-import pcgen.persistence.lst.AbstractToken;
-import pcgen.persistence.lst.GlobalLstToken;
-import pcgen.persistence.lst.prereq.PreParserFactory;
-import pcgen.util.Logging;
-
-/**
- * @author djones4
- *
- */
-public class SaLst extends AbstractToken implements GlobalLstToken
-{
-
- private static final Class<SpecialAbility> SA_CLASS = SpecialAbility.class;
-
- @Override
- public String getTokenName()
- {
- return "SA";
- }
-
- public boolean parse(PObject obj, String value, int anInt)
- {
- if (obj instanceof Skill)
- {
- Logging.errorPrint("SA not supported in Skills");
- return false;
- }
- parseSpecialAbility(obj, value, anInt);
- return true;
- }
-
- /**
- * This method sets the special abilities granted by this [object]. For
- * efficiency, avoid calling this method except from I/O routines.
- *
- * @param obj
- * the PObject that is to receive the new SpecialAbility
- * @param aString
- * String of special abilities delimited by pipes
- * @param level
- * int level at which the ability is gained
- */
- public void parseSpecialAbility(PObject obj, String aString, int level)
- {
- StringTokenizer aTok = new StringTokenizer(aString, "|", true);
-
- if (!aTok.hasMoreTokens())
- {
- return;
- }
-
- StringBuffer saName = new StringBuffer();
- saName.append(aTok.nextToken());
-
- SpecialAbility sa = new SpecialAbility();
-
- boolean isPre = false;
-
- while (aTok.hasMoreTokens())
- {
- String cString = aTok.nextToken();
-
- // Check to see if it's a PRExxx: tag
- if (PreParserFactory.isPreReqString(cString))
- {
- isPre = true;
- try
- {
- PreParserFactory factory = PreParserFactory.getInstance();
- Prerequisite prereq = factory.parse(cString);
- /*
- * The following subkey is required in order to give context
- * to the variables as they are calculated (make the context
- * the current class, so that items like Class Level can be
- * correctly calculated.
- */
- if (obj instanceof PCClass
- && "var".equals(prereq.getKind()))
- {
- prereq.setSubKey("CLASS:" + obj.getKeyName());
- }
- sa.addPreReq(prereq);
- }
- catch (PersistenceLayerException ple)
- {
- Logging.errorPrint(ple.getMessage(), ple);
- }
- }
- else
- {
- if (isPre)
- {
- if (!"|".equals(cString))
- {
- Logging.errorPrint("Invalid " + getTokenName() + ": "
- + aString);
- Logging
- .errorPrint(" PRExxx must be at the END of the Token");
- isPre = false;
- }
- }
- saName.append(cString);
- }
-
- if (".CLEAR".equals(cString))
- {
- obj.clearSpecialAbilityList();
- saName.setLength(0);
- }
- }
-
- sa.setName(saName.toString());
-
- if (level >= 0)
- {
- try
- {
- sa.addPreReq(PreParserFactory.createLevelPrereq(obj, level));
- }
- catch (PersistenceLayerException notUsed)
- {
- Logging.errorPrint("Failed to assign level prerequisite.",
- notUsed);
- }
- }
- if (obj instanceof PCClass)
- {
- sa.setSASource("PCCLASS=" + obj.getKeyName() + "|" + level);
- }
-
- if (!aString.equals(".CLEAR"))
- {
- Globals.addToSASet(sa);
- obj.addSpecialAbilityToList(sa);
- }
- }
-
- public boolean parse(LoadContext context, CDOMObject obj, String value)
- {
- return parseSpecialAbility(context, obj, value);
- }
-
- /**
- * This method sets the special abilities granted by this [object]. For
- * efficiency, avoid calling this method except from I/O routines.
- *
- * @param obj
- * the PObject that is to receive the new SpecialAbility
- * @param aString
- * String of special abilities delimited by pipes
- * @param level
- * int level at which the ability is gained
- */
- public boolean parseSpecialAbility(LoadContext context, CDOMObject obj,
- String aString)
- {
- if (isEmpty(aString) || hasIllegalSeparator('|', aString))
- {
- return false;
- }
-
- StringTokenizer tok = new StringTokenizer(aString, Constants.PIPE);
-
- String firstToken = tok.nextToken();
- if (firstToken.startsWith("PRE") || firstToken.startsWith("!PRE"))
- {
- Logging.errorPrint("Cannot have only PRExxx subtoken in "
- + getTokenName());
- return false;
- }
-
- if (Constants.LST_DOT_CLEAR.equals(firstToken))
- {
- context.getGraphContext().removeAll(getTokenName(), obj);
- if (!tok.hasMoreTokens())
- {
- return true;
- }
- firstToken = tok.nextToken();
- }
-
- if (Constants.LST_DOT_CLEAR.equals(firstToken))
- {
- Logging.errorPrint("SA tag confused by redundant '.CLEAR'"
- + aString);
- return false;
- }
-
- SpecialAbility sa = new SpecialAbility(firstToken);
-
- if (!tok.hasMoreTokens())
- {
- context.getGraphContext().grant(getTokenName(), obj, sa);
- return true;
- }
-
- StringBuilder saName = new StringBuilder();
- saName.append(firstToken);
-
- String token = tok.nextToken();
- while (true)
- {
- if (Constants.LST_DOT_CLEAR.equals(token))
- {
- Logging.errorPrint("SA tag confused by '.CLEAR' as a "
- + "middle token: " + aString);
- return false;
- }
- else if (token.startsWith("PRE") || token.startsWith("!PRE"))
- {
- break;
- }
- else
- {
- saName.append(Constants.PIPE).append(token);
- // sa.addVariable(FormulaFactory.getFormulaFor(token));
- }
-
- if (!tok.hasMoreTokens())
- {
- // No prereqs, so we're done
- // CONSIDER This is a HACK and not the long term strategy of SA:
- sa.setName(saName.toString());
- context.getGraphContext().grant(getTokenName(), obj, sa);
- return true;
- }
- token = tok.nextToken();
- }
- // CONSIDER This is a HACK and not the long term strategy of SA:
- sa.setName(saName.toString());
-
- while (true)
- {
- Prerequisite prereq = getPrerequisite(token);
- if (prereq == null)
- {
- Logging.errorPrint(" (Did you put Abilities after the "
- + "PRExxx tags in " + getTokenName() + ":?)");
- return false;
- }
- /*
- * The following subkey is required in order to give context to the
- * variables as they are calculated (make the context the current
- * class, so that items like Class Level can be correctly
- * calculated).
- */
- if (obj instanceof PCClass && "var".equals(prereq.getKind()))
- {
- prereq.setSubKey("CLASS:" + obj.getKeyName());
- }
- sa.addPrerequisite(prereq);
- if (!tok.hasMoreTokens())
- {
- break;
- }
- token = tok.nextToken();
- }
- context.getGraphContext().grant(getTokenName(), obj, sa);
- return true;
- }
-
- public String[] unparse(LoadContext context, CDOMObject obj)
- {
- AssociatedChanges<SpecialAbility> changes =
- context.getGraphContext().getChangesFromToken(getTokenName(),
- obj, SA_CLASS);
- if (changes == null)
- {
- return null;
- }
- Collection<LSTWriteable> added = changes.getAdded();
- List<String> list = new ArrayList<String>(added.size() + 1);
- if (changes.includesGlobalClear())
- {
- list.add(Constants.LST_DOT_CLEAR);
- }
- else if (added.isEmpty())
- {
- // Zero indicates no Token (and no global clear, so nothing to do)
- return null;
- }
- for (LSTWriteable lw : added)
- {
- StringBuilder sb = new StringBuilder();
- SpecialAbility ab = (SpecialAbility) lw;
- sb.append(ab.getDisplayName());
- if (ab.hasPrerequisites())
- {
- sb.append(Constants.PIPE);
- sb.append(getPrerequisiteString(context, ab
- .getPrerequisiteList()));
- }
- list.add(sb.toString());
- }
- return list.toArray(new String[list.size()]);
- }
-}
Copied: branches/cdom/code/src/java/plugin/lsttokens/SabLst.java (from rev 4173, Trunk/pcgen/code/src/java/plugin/lsttokens/SabLst.java)
===================================================================
--- branches/cdom/code/src/java/plugin/lsttokens/SabLst.java (rev 0)
+++ branches/cdom/code/src/java/plugin/lsttokens/SabLst.java 2007-09-29 18:36:32 UTC (rev 4180)
@@ -0,0 +1,325 @@
+package plugin.lsttokens;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.StringTokenizer;
+
+import pcgen.cdom.base.CDOMObject;
+import pcgen.cdom.base.Constants;
+import pcgen.cdom.base.LSTWriteable;
+import pcgen.core.Globals;
+import pcgen.core.PCClass;
+import pcgen.core.PObject;
+import pcgen.core.Skill;
+import pcgen.core.SpecialAbility;
+import pcgen.core.prereq.Prerequisite;
+import pcgen.persistence.AssociatedChanges;
+import pcgen.persistence.LoadContext;
+import pcgen.persistence.PersistenceLayerException;
+import pcgen.persistence.lst.AbstractToken;
+import pcgen.persistence.lst.GlobalLstToken;
+import pcgen.persistence.lst.prereq.PreParserFactory;
+import pcgen.util.Logging;
+
+public class SabLst extends AbstractToken implements GlobalLstToken
+{
+
+ private static final Class<SpecialAbility> SA_CLASS = SpecialAbility.class;
+
+ @Override
+ public String getTokenName()
+ {
+ return "SAB";
+ }
+
+ public boolean parse(PObject obj, String value, int anInt)
+ {
+ if (obj instanceof Skill)
+ {
+ Logging.errorPrint("SA not supported in Skills");
+ return false;
+ }
+ return parseSpecialAbility(obj, value, anInt);
+ }
+
+ /**
+ * This method sets the special abilities granted by this [object].
+ *
+ * @param obj
+ * the PObject that is to receive the new SpecialAbility
+ * @param aString
+ * String of special abilities delimited by pipes
+ * @param level
+ * int level at which the ability is gained
+ */
+ public boolean parseSpecialAbility(PObject obj, String value, int level)
+ {
+ if (value.startsWith(".CLEAR."))
+ {
+ String saName = value.substring(7);
+ if (saName.indexOf("|") != -1)
+ {
+ Logging
+ .errorPrint("Cannot .CLEAR. an SAB with a | in the token: "
+ + value);
+ return false;
+ }
+ obj.removeSAB(saName, level);
+ return true;
+ }
+ StringTokenizer tok = new StringTokenizer(value, "|");
+
+ String token = tok.nextToken();
+
+ if (".CLEAR".equals(token))
+ {
+ obj.clearSABList(level);
+ if (!tok.hasMoreTokens())
+ {
+ return true;
+ }
+ token = tok.nextToken();
+ }
+
+ StringBuffer saName = new StringBuffer();
+ saName.append(token);
+ SpecialAbility sa = new SpecialAbility();
+
+ boolean isPre = false;
+ boolean first = false;
+
+ while (tok.hasMoreTokens())
+ {
+ String argument = tok.nextToken();
+
+ // Check to see if it's a PRExxx: tag
+ if (PreParserFactory.isPreReqString(argument))
+ {
+ isPre = true;
+ try
+ {
+ PreParserFactory factory = PreParserFactory.getInstance();
+ Prerequisite prereq = factory.parse(argument);
+ if (obj instanceof PCClass
+ && "var".equals(prereq.getKind()))
+ {
+ prereq.setSubKey("CLASS:" + obj.getKeyName());
+ }
+ sa.addPreReq(prereq);
+ }
+ catch (PersistenceLayerException ple)
+ {
+ Logging.errorPrint(ple.getMessage(), ple);
+ return false;
+ }
+ }
+ else if (token.startsWith(".CLEAR"))
+ {
+ Logging.errorPrint("Embedded .CLEAR in " + getTokenName()
+ + " is not supported: " + value);
+ return false;
+ }
+ else
+ {
+ if (isPre)
+ {
+ Logging.errorPrint("Invalid " + getTokenName() + ": "
+ + value);
+ Logging
+ .errorPrint(" PRExxx must be at the END of the Token");
+ return false;
+ }
+ if (!first)
+ {
+ saName.append("|");
+ }
+ saName.append(argument);
+ }
+ first = false;
+ }
+
+ sa.setName(saName.toString());
+
+ if (level >= 0)
+ {
+ try
+ {
+ sa.addPreReq(PreParserFactory.createLevelPrereq(obj, level));
+ }
+ catch (PersistenceLayerException notUsed)
+ {
+ Logging.errorPrint("Failed to assign level prerequisite.",
+ notUsed);
+ }
+ }
+ if (obj instanceof PCClass)
+ {
+ sa.setSASource("PCCLASS=" + obj.getKeyName() + "|" + level);
+ }
+
+ Globals.addToSASet(sa);
+ obj.addSAB(sa, level);
+ return true;
+ }
+
+ public boolean parse(LoadContext context, CDOMObject obj, String value)
+ {
+ return parseSpecialAbility(context, obj, value);
+ }
+
+ /**
+ * This method sets the special abilities granted by this [object]. For
+ * efficiency, avoid calling this method except from I/O routines.
+ *
+ * @param obj
+ * the PObject that is to receive the new SpecialAbility
+ * @param aString
+ * String of special abilities delimited by pipes
+ * @param level
+ * int level at which the ability is gained
+ */
+ public boolean parseSpecialAbility(LoadContext context, CDOMObject obj,
+ String aString)
+ {
+ if (isEmpty(aString) || hasIllegalSeparator('|', aString))
+ {
+ return false;
+ }
+
+ StringTokenizer tok = new StringTokenizer(aString, Constants.PIPE);
+
+ String firstToken = tok.nextToken();
+ if (firstToken.startsWith("PRE") || firstToken.startsWith("!PRE"))
+ {
+ Logging.errorPrint("Cannot have only PRExxx subtoken in "
+ + getTokenName());
+ return false;
+ }
+
+ if (Constants.LST_DOT_CLEAR.equals(firstToken))
+ {
+ context.getGraphContext().removeAll(getTokenName(), obj);
+ if (!tok.hasMoreTokens())
+ {
+ return true;
+ }
+ firstToken = tok.nextToken();
+ }
+
+ if (Constants.LST_DOT_CLEAR.equals(firstToken))
+ {
+ Logging.errorPrint("SA tag confused by redundant '.CLEAR'"
+ + aString);
+ return false;
+ }
+
+ SpecialAbility sa = new SpecialAbility(firstToken);
+
+ if (!tok.hasMoreTokens())
+ {
+ context.getGraphContext().grant(getTokenName(), obj, sa);
+ return true;
+ }
+
+ StringBuilder saName = new StringBuilder();
+ saName.append(firstToken);
+
+ String token = tok.nextToken();
+ while (true)
+ {
+ if (Constants.LST_DOT_CLEAR.equals(token))
+ {
+ Logging.errorPrint("SA tag confused by '.CLEAR' as a "
+ + "middle token: " + aString);
+ return false;
+ }
+ else if (token.startsWith("PRE") || token.startsWith("!PRE"))
+ {
+ break;
+ }
+ else
+ {
+ saName.append(Constants.PIPE).append(token);
+ // sa.addVariable(FormulaFactory.getFormulaFor(token));
+ }
+
+ if (!tok.hasMoreTokens())
+ {
+ // No prereqs, so we're done
+ // CONSIDER This is a HACK and not the long term strategy of SA:
+ sa.setName(saName.toString());
+ context.getGraphContext().grant(getTokenName(), obj, sa);
+ return true;
+ }
+ token = tok.nextToken();
+ }
+ // CONSIDER This is a HACK and not the long term strategy of SA:
+ sa.setName(saName.toString());
+
+ while (true)
+ {
+ Prerequisite prereq = getPrerequisite(token);
+ if (prereq == null)
+ {
+ Logging.errorPrint(" (Did you put Abilities after the "
+ + "PRExxx tags in " + getTokenName() + ":?)");
+ return false;
+ }
+ /*
+ * The following subkey is required in order to give context to the
+ * variables as they are calculated (make the context the current
+ * class, so that items like Class Level can be correctly
+ * calculated).
+ */
+ if (obj instanceof PCClass && "var".equals(prereq.getKind()))
+ {
+ prereq.setSubKey("CLASS:" + obj.getKeyName());
+ }
+ sa.addPrerequisite(prereq);
+ if (!tok.hasMoreTokens())
+ {
+ break;
+ }
+ token = tok.nextToken();
+ }
+ context.getGraphContext().grant(getTokenName(), obj, sa);
+ return true;
+ }
+
+ public String[] unparse(LoadContext context, CDOMObject obj)
+ {
+ AssociatedChanges<SpecialAbility> changes =
+ context.getGraphContext().getChangesFromToken(getTokenName(),
+ obj, SA_CLASS);
+ if (changes == null)
+ {
+ return null;
+ }
+ Collection<LSTWriteable> added = changes.getAdded();
+ List<String> list = new ArrayList<String>(added.size() + 1);
+ if (changes.includesGlobalClear())
+ {
+ list.add(Constants.LST_DOT_CLEAR);
+ }
+ else if (added.isEmpty())
+ {
+ // Zero indicates no Token (and no global clear, so nothing to do)
+ return null;
+ }
+ for (LSTWriteable lw : added)
+ {
+ StringBuilder sb = new StringBuilder();
+ SpecialAbility ab = (SpecialAbility) lw;
+ sb.append(ab.getDisplayName());
+ if (ab.hasPrerequisites())
+ {
+ sb.append(Constants.PIPE);
+ sb.append(getPrerequisiteString(context, ab
+ .getPrerequisiteList()));
+ }
+ list.add(sb.toString());
+ }
+ return list.toArray(new String[list.size()]);
+ }
+}
Deleted: branches/cdom/code/src/java/plugin/lsttokens/choose/EqBuilderToken.java
===================================================================
--- branches/cdom/code/src/java/plugin/lsttokens/choose/EqBuilderToken.java 2007-09-29 18:36:05 UTC (rev 4179)
+++ branches/cdom/code/src/java/plugin/lsttokens/choose/EqBuilderToken.java 2007-09-29 18:36:32 UTC (rev 4180)
@@ -1,49 +0,0 @@
-/*
- * Copyright 2007 (C) Thomas Parker <th...@us...>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-package plugin.lsttokens.choose;
-
-import pcgen.core.PObject;
-import pcgen.persistence.lst.ChooseLstToken;
-import pcgen.util.Logging;
-
-public class EqBuilderToken implements ChooseLstToken
-{
-
- public boolean parse(PObject po, String prefix, String value)
- {
- if (value != null)
- {
- Logging.deprecationPrint("CHOOSE:" + getTokenName()
- + " will ignore arguments: " + value);
- }
- // No args - legal
- StringBuilder sb = new StringBuilder();
- if (prefix.length() > 0)
- {
- sb.append(prefix).append('|');
- }
- sb.append(getTokenName());
- po.setChoiceString(sb.toString());
- return true;
- }
-
- public String getTokenName()
- {
- return "EQBUILDER";
- }
-}
Copied: branches/cdom/code/src/java/plugin/lsttokens/choose/StringToken.java (from rev 4173, Trunk/pcgen/code/src/java/plugin/lsttokens/choose/StringToken.java)
===================================================================
--- branches/cdom/code/src/java/plugin/lsttokens/choose/StringToken.java (rev 0)
+++ branches/cdom/code/src/java/plugin/lsttokens/choose/StringToken.java 2007-09-29 18:36:32 UTC (rev 4180)
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2007 (C) Thomas Parker <th...@us...>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package plugin.lsttokens.choose;
+
+import pcgen.core.EquipmentModifier;
+import pcgen.core.PObject;
+import pcgen.persistence.lst.ChooseLstToken;
+import pcgen.util.Logging;
+
+public class StringToken implements ChooseLstToken
+{
+
+ public boolean parse(PObject po, String prefix, String value)
+ {
+ if (po instanceof EquipmentModifier)
+ {
+ Logging.errorPrint("CHOOSE:" + getTokenName()
+ + " may not be used in EquipmentModifier");
+ return false;
+ }
+ if (value.indexOf(',') != -1)
+ {
+ Logging.errorPrint("CHOOSE:" + getTokenName()
+ + " arguments may not contain , : " + value);
+ return false;
+ }
+ if (value.indexOf('[') != -1)
+ {
+ Logging.errorPrint("CHOOSE:" + getTokenName()
+ + " arguments may not contain [] : " + value);
+ return false;
+ }
+ if (value.charAt(0) == '|')
+ {
+ Logging.errorPrint("CHOOSE:" + getTokenName()
+ + " arguments may not start with | : " + value);
+ return false;
+ }
+ if (value.charAt(value.length() - 1) == '|')
+ {
+ Logging.errorPrint("CHOOSE:" + getTokenName()
+ + " arguments may not end with | : " + value);
+ return false;
+ }
+ if (value.indexOf("||") != -1)
+ {
+ Logging.errorPrint("CHOOSE:" + getTokenName()
+ + " arguments uses double separator || : " + value);
+ return false;
+ }
+ StringBuilder sb = new StringBuilder();
+ if (prefix.length() > 0)
+ {
+ sb.append(prefix).append('|');
+ }
+ sb.append(value);
+ po.setChoiceString(sb.toString());
+ return true;
+ }
+
+ public String getTokenName()
+ {
+ return "STRING";
+ }
+}
Copied: branches/cdom/code/src/java/plugin/lsttokens/gamemode/PreviewDirToken.java (from rev 4173, Trunk/pcgen/code/src/java/plugin/lsttokens/gamemode/PreviewDirToken.java)
===================================================================
--- branches/cdom/code/src/java/plugin/lsttokens/gamemode/PreviewDirToken.java (rev 0)
+++ branches/cdom/code/src/java/plugin/lsttokens/gamemode/PreviewDirToken.java 2007-09-29 18:36:32 UTC (rev 4180)
@@ -0,0 +1,56 @@
+/*
+ * PreviewDirToken.java
+ * Copyright 2007 (C) Aaron Divinsky <boo...@ya...>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * Current Ver: $Revision$
+ * Last Editor: $Author: $
+ * Last Edited: $Date$
+ */
+package plugin.lsttokens.gamemode;
+
+import java.net.URI;
+
+import pcgen.core.GameMode;
+import pcgen.persistence.lst.GameModeLstToken;
+
+/**
+ * This class handles the PREVIEWDIR game mode token.
+ *
+ * @author boomer70 <boo...@ya...>
+ *
+ * @since 5.13.2
+ */
+public class PreviewDirToken implements GameModeLstToken
+{
+
+ public boolean parse(GameMode gameMode, String value, URI source)
+ {
+ gameMode.setPreviewDir(value);
+ return true;
+ }
+
+ /**
+ * Returns the name of the token this class handles.
+ *
+ * @see pcgen.persistence.lst.LstToken#getTokenName()
+ */
+ public String getTokenName()
+ {
+ return "PREVIEWDIR"; //$NON-NLS-1$
+ }
+
+}
Copied: branches/cdom/code/src/java/plugin/lsttokens/gamemode/PreviewSheetToken.java (from rev 4173, Trunk/pcgen/code/src/java/plugin/lsttokens/gamemode/PreviewSheetToken.java)
===================================================================
--- branches/cdom/code/src/java/plugin/lsttokens/gamemode/PreviewSheetToken.java (rev 0)
+++ branches/cdom/code/src/java/plugin/lsttokens/gamemode/PreviewSheetToken.java 2007-09-29 18:36:32 UTC (rev 4180)
@@ -0,0 +1,56 @@
+/*
+ * PreviewSheetToken.java
+ * Copyright 2007 (C) Aaron Divinsky <boo...@ya...>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * Current Ver: $Revision$
+ * Last Editor: $Author: $
+ * Last Edited: $Date$
+ */
+package plugin.lsttokens.gamemode;
+
+import java.net.URI;
+
+import pcgen.core.GameMode;
+import pcgen.persistence.lst.GameModeLstToken;
+
+/**
+ * This class handles the PREVIEWSHEET game mode token.
+ *
+ * @author boomer70 <boo...@ya...>
+ *
+ * @since 5.13.2
+ */
+public class PreviewSheetToken implements GameModeLstToken
+{
+
+ public boolean parse(GameMode gameMode, String value, URI source)
+ {
+ gameMode.setDefaultPreviewSheet(value);
+ return true;
+ }
+
+ /**
+ * Returns the name of the token this class handles.
+ *
+ * @see pcgen.persistence.lst.LstToken#getTokenName()
+ */
+ public String getTokenName()
+ {
+ return "PREVIEWSHEET"; //$NON-NLS-1$
+ }
+
+}
Copied: branches/cdom/code/src/java/plugin/lsttokens/gamemode/abilitycategory/DisplayLocationToken.java (from rev 4173, Trunk/pcgen/code/src/java/plugin/lsttokens/gamemode/abilitycategory/DisplayLocationToken.java)
===================================================================
--- branches/cdom/code/src/java/plugin/lsttokens/gamemode/abilitycategory/DisplayLocationToken.java (rev 0)
+++ branches/cdom/code/src/java/plugin/lsttokens/gamemode/abilitycategory/DisplayLocationToken.java 2007-09-29 18:36:32 UTC (rev 4180)
@@ -0,0 +1,54 @@
+/*
+ * DisplayLocationToken.java
+ * Copyright 2007 (C) James Dempsey <jde...@us...>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * Current Ver: $Revision$
+ * Last Editor: $Author$
+ * Last Edited: $Date$
+ */
+package plugin.lsttokens.gamemode.abilitycategory;
+
+import pcgen.core.AbilityCategory;
+import pcgen.persistence.lst.AbilityCategoryLstToken;
+
+/**
+ * Handles the DISPLAYLOCATION token on an ABILITYCATEGORY line.
+ *
+ * @author James Dempsey <jde...@us...>
+ *
+ * @since 5.13.0
+ */
+public class DisplayLocationToken implements AbilityCategoryLstToken
+{
+
+ /**
+ * @see pcgen.persistence.lst.AbilityCategoryLstToken#parse(pcgen.core.AbilityCategory, java.lang.String)
+ */
+ public boolean parse(final AbilityCategory aCat, final String aValue)
+ {
+ aCat.setDisplayLocation(aValue);
+ return true;
+ }
+
+ /**
+ * @see pcgen.persistence.lst.LstToken#getTokenName()
+ */
+ public String getTokenName()
+ {
+ return "DISPLAYLOCATION"; //$NON-NLS-1$
+ }
+}
Modified: branches/cdom/code/src/java/plugin/lsttokens/gamemode/abilitycategory/VisibleToken.java
===================================================================
--- branches/cdom/code/src/java/plugin/lsttokens/gamemode/abilitycategory/VisibleToken.java 2007-09-29 18:36:05 UTC (rev 4179)
+++ branches/cdom/code/src/java/plugin/lsttokens/gamemode/abilitycategory/VisibleToken.java 2007-09-29 18:36:32 UTC (rev 4180)
@@ -24,6 +24,7 @@
import pcgen.core.AbilityCategory;
import pcgen.persistence.lst.AbilityCategoryLstToken;
+import pcgen.util.Logging;
/**
* Handles the VISIBLE token on an ABILITYCATEGORY line.
@@ -39,14 +40,53 @@
*/
public boolean parse(final AbilityCategory aCat, final String aValue)
{
- if (aValue.charAt(0) == 'Y')
+ if ((aValue.length() > 0) && (aValue.charAt(0) == 'Y'))
{
- aCat.setVisible(true);
+ if (!aValue.equals("YES"))
+ {
+ Logging
+ .deprecationPrint("Abbreviation used in VISIBLE in AbilityCategory");
+ Logging.deprecationPrint(" " + aValue
+ + " is not a valid value for VISIBLE");
+ Logging
+ .deprecationPrint(" Valid values in AbilityCategory are NO, QUALIFY and YES");
+ Logging
+ .deprecationPrint(" assuming you meant YES, please use YES (exact String, upper case) in the LST file");
+ Logging.deprecationPrint(" This will break after PCGen 5.14");
+ }
+ aCat.setVisible(AbilityCategory.VISIBLE_YES);
}
- else if (aValue.charAt(0) == 'N')
+ else if ((aValue.length() > 0) && (aValue.charAt(0) == 'Q'))
{
- aCat.setVisible(false);
+ if (!aValue.equals("QUALIFY"))
+ {
+ Logging
+ .deprecationPrint("Abbreviation used in VISIBLE in AbilityCategory");
+ Logging.deprecationPrint(" " + aValue
+ + " is not a valid value for VISIBLE");
+ Logging
+ .deprecationPrint(" Valid values in AbilityCategory are NO, QUALIFY and YES");
+ Logging
+ .deprecationPrint(" assuming you meant QUALIFY, please use QUALIFY (exact String, upper case) in the LST file");
+ Logging.deprecationPrint(" This will break after PCGen 5.14");
+ }
+ aCat.setVisible(AbilityCategory.VISIBLE_QUALIFIED);
}
+ else if ((aValue.length() > 0) && (aValue.charAt(0) == 'N'))
+ {
+ if (!aValue.equals("NO")) {
+ Logging
+ .deprecationPrint("Abbreviation used in VISIBLE in AbilityCategory");
+ Logging.deprecationPrint(" " + aValue
+ + " is not a valid value for VISIBLE");
+ Logging
+ .deprecationPrint(" Valid values in AbilityCategory are NO, QUALIFY and YES");
+ Logging
+ .deprecationPrint(" assuming you meant NO, please use NO (exact String, upper case) in the LST file");
+ Logging.deprecationPrint(" This will break after PCGen 5.14");
+ }
+ aCat.setVisible(AbilityCategory.VISIBLE_NO);
+ }
else
{
return false;
Modified: branches/cdom/code/src/java/plugin/lsttokens/pcclass/KnownspellsToken.java
===================================================================
--- branches/cdom/code/src/java/plugin/lsttokens/pcclass/KnownspellsToken.java 2007-09-29 18:36:05 UTC (rev 4179)
+++ branches/cdom/code/src/java/plugin/lsttokens/pcclass/KnownspellsToken.java 2007-09-29 18:36:32 UTC (rev 4180)
@@ -71,11 +71,18 @@
if (".CLEAR".equals(value))
{
+ Logging.errorPrint(getTokenName()
+ + " uses deprecated syntax. "
+ + "Use .CLEARALL (not .CLEAR) to clear the values");
return true;
}
+ else if (".CLEARALL".equals(value))
+ {
+ return true;
+ }
String rest;
- if (value.startsWith(".CLEAR|"))
+ if (value.startsWith(".CLEARALL|"))
{
rest = value.substring(7);
}
@@ -83,7 +90,7 @@
{
Logging.errorPrint("Invalid KNOWNSPELLS Syntax using .CLEAR");
Logging
- .errorPrint("Please separate .CLEAR from the rest of the token with a |");
+ .errorPrint("Please separate .CLEARALL from the rest of the token with a |");
rest = value.substring(6);
}
pipeTok = new StringTokenizer(rest, Constants.PIPE);
Modified: branches/cdom/code/src/java/plugin/lsttokens/pcclass/SpelllistToken.java
===================================================================
--- branches/cdom/code/src/java/plugin/lsttokens/pcclass/SpelllistToken.java 2007-09-29 18:36:05 UTC (rev 4179)
+++ branches/cdom/code/src/java/plugin/lsttokens/pcclass/SpelllistToken.java 2007-09-29 18:36:32 UTC (rev 4180)
@@ -36,6 +36,7 @@
import pcgen.cdom.helper.GrantActor;
import pcgen.cdom.helper.ReferenceChoiceSet;
import pcgen.core.ClassSpellList;
+import pcgen.core.Globals;
import pcgen.core.PCClass;
import pcgen.core.PCTemplate;
import pcgen.persistence.AssociatedChanges;
@@ -83,7 +84,30 @@
while (aTok.hasMoreTokens())
{
- spellChoices.add(aTok.nextToken());
+ String className = aTok.nextToken();
+ if (Globals.getDomainKeyed(className) != null)
+ {
+ Logging.deprecationPrint(getTokenName()
+ + " now requires a DOMAIN. prefix "
+ + "when used with a DOMAIN rather than a Class");
+ }
+ if (className.startsWith("DOMAIN."))
+ {
+ String domainName = className.substring(7);
+ if (Globals.getDomainKeyed(domainName) != null)
+ {
+ Logging.errorPrint(getTokenName()
+ + " could not find Domain: " + domainName);
+ return false;
+ }
+ // This is safe in 5.x since the class & domain names can't
+ // conflict
+ spellChoices.add(domainName);
+ }
+ else
+ {
+ spellChoices.add(className);
+ }
}
// Protection against a "" value parameter
Modified: branches/cdom/code/src/java/plugin/lsttokens/pcclass/VfeatToken.java
===================================================================
--- branches/cdom/code/src/java/plugin/lsttokens/pcclass/VfeatToken.java 2007-09-29 18:36:05 UTC (rev 4179)
+++ branches/cdom/code/src/java/plugin/lsttokens/pcclass/VfeatToken.java 2007-09-29 18:36:32 UTC (rev 4180)
@@ -93,7 +93,6 @@
pcclass.addAbility(AbilityCategory.FEAT, Ability.Nature.VIRTUAL,
ability);
}
- pcclass.addVirtualFeats(level, FeatParser.parseVirtualFeatList(value));
return true;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <th...@us...> - 2007-09-29 18:46:25
|
Revision: 4184
http://pcgen.svn.sourceforge.net/pcgen/?rev=4184&view=rev
Author: thpr
Date: 2007-09-29 11:38:43 -0700 (Sat, 29 Sep 2007)
Log Message:
-----------
Bring CDOM up to 4173 *update complete*
Modified Paths:
--------------
branches/cdom/.classpath
branches/cdom/build.xml
branches/cdom/logging.properties
branches/cdom/maven.xml
branches/cdom/project.xml
branches/cdom/xdocs/changes.xml
Modified: branches/cdom/.classpath
===================================================================
--- branches/cdom/.classpath 2007-09-29 18:38:20 UTC (rev 4183)
+++ branches/cdom/.classpath 2007-09-29 18:38:43 UTC (rev 4184)
@@ -5,7 +5,11 @@
<classpathentry excluding="**/.svn/*" kind="src" path="code/src/java"/>
<classpathentry excluding="**/.svn/*" kind="src" path="code/src/test"/>
<classpathentry kind="src" path="code/src/utest"/>
- <classpathentry kind="var" path="JRE_LIB" sourcepath="JRE_SRC"/>
+ <classpathentry kind="var" path="JRE_LIB" sourcepath="/JRE_SRC">
+ <attributes>
+ <attribute name="javadoc_location" value="http://java.sun.com/j2se/1.5.0/docs/api/"/>
+ </attributes>
+ </classpathentry>
<classpathentry kind="lib" path="lib/fop/avalon-framework-cvs-20020806.jar"/>
<classpathentry kind="lib" path="lib/fop/batik.jar"/>
<classpathentry kind="lib" path="lib/fop/fop.jar"/>
@@ -28,7 +32,13 @@
<classpathentry kind="lib" path="lib/jep/RngPack-1.1a.jar"/>
<classpathentry kind="lib" path="lib/test/xmlunit1.0.jar"/>
<classpathentry kind="lib" path="lib/javacc.jar"/>
- <classpathentry kind="lib" path="lib/jep/jep-2.3.1.jar"/>
+ <classpathentry kind="lib" path="lib/jep/jep-2.3.1.jar">
+ <attributes>
+ <attribute name="javadoc_location" value="http://www.singularsys.com/jep/doc/javadoc/"/>
+ </attributes>
+ </classpathentry>
<classpathentry kind="lib" path="lib/jep/djep-2.24.jar"/>
+ <classpathentry kind="lib" path="lib/cobra/cobra.jar"/>
+ <classpathentry kind="lib" path="lib/cobra/js.jar"/>
<classpathentry kind="output" path="code/build.eclipse"/>
</classpath>
Modified: branches/cdom/build.xml
===================================================================
--- branches/cdom/build.xml 2007-09-29 18:38:20 UTC (rev 4183)
+++ branches/cdom/build.xml 2007-09-29 18:38:43 UTC (rev 4184)
@@ -7,11 +7,7 @@
STANDARD TARGETS
================
-fetch-devel - update from CVS read-write
-fetch-anon - update from CVS read-only
-fetch-data - export data files from PCGen:DM CVS read-only
-fetch-docs - export doc files from PCGenDocs CVS read-only
-fetch-sheets - export outputsheets files from PCGenDocs CVS read-only
+svnupdate - update from SVN read-only
all - clean, [fetch-anon/devel], build, test, docs, deploy
main - the default build process (build)
clean - clean out the output directories
@@ -23,7 +19,7 @@
docs - do the API documenation (targets pcgen/doc/api)
deploy - ship the jars, wars, whatever to the execution system
-complete - runs clean fetch-data fetch-docs fetch-sheets fetch-devel all; for testing complete cycle
+complete - runs clean fetch-data fetch-docs fetch-sheets all; for testing complete cycle
BUILD
=====
@@ -46,7 +42,6 @@
<project name="pcgen" default="main" basedir=".">
<import file="code/pluginbuild.xml" />
-
<property name="bin.dir" value="${basedir}/code/bin" />
<property name="build.dir" value="${basedir}/code/build" />
<property name="build.classes.dir" value="${build.dir}/classes" />
@@ -70,10 +65,6 @@
<property name="docs.overview" value="${src.java.dir}/pcgen/overview.html" />
<property name="src.xml.dir" value="${basedir}/xml" />
- <!-- For anonymous CVS -->
- <property name="fetch.passfile" value="anon-cvs.passfile" />
- <property name="fetch.cvsroot" value=":pserver:ano...@cv.../cvsroot" />
-
<!-- Choose compiler. Values are "classic", "modern", "jikes", "jvc"-->
<property name="build.compiler" value="modern" />
@@ -82,7 +73,7 @@
<property name="manifest.file" value="code/manifest" />
<property name="manifest.main.class" value="pcgen.core.Main" />
<property name="default.main.class" value="pcgen.gui.pcGenGUI" />
- <property name="manifest.extra.jars" value="${lib.dir}/fop/xercesImpl-2.5.0.jar ${lib.dir}/fop/avalon-framework-cvs-20020806.jar ${lib.dir}/fop/xml-apis.jar ${lib.dir}/fop/xalan-2.5.2.jar ${lib.dir}/fop/batik.jar ${lib.dir}/fop/fop.jar ${lib.dir}/lnf/kunststoff.jar ${lib.dir}/lnf/skinlf.jar ${lib.dir}/lnf/wraplf.jar ${lib.dir}/jep/jep-2.3.1.jar ${lib.dir}/jdom.jar ${lib.dir}/MRJ141Stubs.jar ${lib.dir}/jep/djep-2.24.jar ${lib.dir}/jep/RngPack-1.1a.jar ${lib.dir}/tracerapi.jar" />
+ <property name="manifest.extra.jars" value="${lib.dir}/fop/xercesImpl-2.5.0.jar ${lib.dir}/fop/avalon-framework-cvs-20020806.jar ${lib.dir}/fop/xml-apis.jar ${lib.dir}/fop/xalan-2.5.2.jar ${lib.dir}/fop/batik.jar ${lib.dir}/fop/fop.jar ${lib.dir}/lnf/kunststoff.jar ${lib.dir}/lnf/skinlf.jar ${lib.dir}/lnf/wraplf.jar ${lib.dir}/jep/jep-2.3.1.jar ${lib.dir}/jdom.jar ${lib.dir}/MRJ141Stubs.jar ${lib.dir}/jep/djep-2.24.jar ${lib.dir}/jep/RngPack-1.1a.jar ${lib.dir}/tracerapi.jar ${lib.dir}/cobra/cobra.jar ${lib.dir}/cobra/js.jar" />
<!-- Text files always shipped along -->
<property name="project.install.file" value="INSTALL" />
@@ -122,7 +113,6 @@
<path refid="project.jars" />
</path>
-
<!-- For testing -->
<property name="test.jar.file" value="pcgen-tests.jar" />
<property name="test.manifest.file" value="code/manifest-tests" />
@@ -318,11 +308,11 @@
all, main
-->
- <target name="rebuild" depends="clean, fetch-devel, build" description="Clean, refresh from CVS, and build the jar file." />
+ <target name="rebuild" depends="clean, svnupdate, build" description="Clean, update from SVN, and build the jar file." />
- <target name="all" depends="clean, build, test, emma.report, docs, deploy" description="Everything except refetch from CVS." />
+ <target name="all" depends="clean, build, test, emma.report, docs, deploy" description="Everything except update from SVN." />
- <target name="complete" depends="clean, fetch-devel, build, fetch-data, fetch-docs, fetch-sheets, test, emma.report, docs, deploy" description="Everything including developer refresh from CVS." />
+ <target name="complete" depends="clean, svnupdate, build, test, emma.report, docs, deploy" description="Everything including update from SVN." />
<target name="main" depends="build, test" description="[default] Do an (incremental) build." />
@@ -515,49 +505,24 @@
<target name="real-clean" depends="clean, clean-data, clean-docs, clean-sheets, clean-inifiles" description="Clean everything back to initial checkout" />
-
- <!-- CVS targets -->
-
- <target name="fetch-devel" description="Get the latest source from the CVS tree as a developer; this gives read-write access to the sources.">
- <cvs command="-qz3 update -PRd ." />
+ <!-- SVN targets -->
+
+ <target name="svnupdate">
+ <exec executable="svn">
+ <arg line="up" />
+ </exec>
</target>
- <target name="fetch-anon" description="Get the latest source anonymously from the CVS tree; this gives read-only access to the sources.">
- <echo file="${fetch.passfile}">/1 ${fetch.cvsroot}/pcgen A
-</echo>
- <cvs cvsRoot="${fetch.cvsroot}/pcgen" passfile="${fetch.passfile}" command="-qz3 update -PRd ." />
- <delete file="${fetch.passfile}" />
- </target>
+ <!-- Cleanup targets -->
- <target name="fetch-data" depends="clean-data" description="Get the latest data files anonymously from the PCGen:DM CVS tree; this gives read-only access to the data files.">
- <echo file="${fetch.passfile}">/1 ${fetch.cvsroot}/pcgendm A
-</echo>
- <cvs cvsRoot="${fetch.cvsroot}/pcgendm" passfile="${fetch.passfile}" command="export -d ${src.data.dir} -D now pcgendm/development/data" />
- <delete file="${fetch.passfile}" />
- </target>
-
<target name="clean-data" description="Remove data directory">
<delete dir="${src.data.dir}" />
</target>
- <target name="fetch-docs" depends="clean-docs" description="Get the latest doc files anonymously from the PCGenDocs CVS tree; this gives read-only access to the doc files.">
- <echo file="${fetch.passfile}">/1 ${fetch.cvsroot}/pcgendocs/pcgendocs A
-</echo>
- <cvs cvsRoot="${fetch.cvsroot}/pcgendocs" passfile="${fetch.passfile}" command="export -d ${src.docs.dir} -D now pcgendocs/docs" />
- <delete file="${fetch.passfile}" />
- </target>
-
<target name="clean-docs" description="Remove docs directory">
<delete dir="${src.docs.dir}" />
</target>
- <target name="fetch-sheets" depends="clean-sheets" description="Get the latest output sheet files anonymously from the PCGenDocs CVS tree; this gives read-only access to the sheet files.">
- <echo file="${fetch.passfile}">/1 ${fetch.cvsroot}/pcgendocs/pcgendocs A
-</echo>
- <cvs cvsRoot="${fetch.cvsroot}/pcgendocs" passfile="${fetch.passfile}" command="export -d ${src.outputsheets.dir} -D now pcgendocs/outputsheets" />
- <delete file="${fetch.passfile}" />
- </target>
-
<target name="clean-sheets" description="Remove outputsheets directory">
<delete dir="${src.outputsheets.dir}" />
</target>
Modified: branches/cdom/logging.properties
===================================================================
--- branches/cdom/logging.properties 2007-09-29 18:38:20 UTC (rev 4183)
+++ branches/cdom/logging.properties 2007-09-29 18:38:43 UTC (rev 4184)
@@ -14,15 +14,15 @@
# Note: If a level is enabled, all levels above it on this
# list will also be enabled.
# SEVERE (for all exceptions etc including NPEs)
-# LST_ERROR (LST error output)
-# LST_WARNING (LST warnings such as deprecated syntax use)
+# LSTERROR (LST error output)
# WARNING (for any code warnings)
+# LSTWARN (LST warnings such as deprecated syntax use)
# INFO (for any information messages such as memory on output sheet runs etc)
-# LST_INFO (LST information such as references to missing items in PRE or CHOOSE tags.)
+# LSTINFO (LST information such as references to missing items in PRE or CHOOSE tags.)
# FINER (aka DEBUG for all code tracing info)
# Set the default logging level for the all classes
-.level = WARNING
+.level = SEVERE
# Set the default logging level for new ConsoleHandler instances
# The highest level of the handler and the class is used, so best to
@@ -37,6 +37,6 @@
# Set the logging level for the PCGen loggers.
# Note: Add specific classes below using their fully qualified name
-pcgen.level = WARNING
-plugin.level = WARNING
+pcgen.level = LSTWARN
+plugin.level = LSTWARN
#pcgen.gui.tabs.ability.AbilityInfoPanel = FINER
\ No newline at end of file
Modified: branches/cdom/maven.xml
===================================================================
--- branches/cdom/maven.xml 2007-09-29 18:38:20 UTC (rev 4183)
+++ branches/cdom/maven.xml 2007-09-29 18:38:43 UTC (rev 4184)
@@ -78,6 +78,7 @@
<include name="outputsheets/**"/>
<include name="docs/**"/>
<include name="system/**"/>
+ <include name="preview/**"/>
</fileset>
</ant:zip>
Modified: branches/cdom/project.xml
===================================================================
--- branches/cdom/project.xml 2007-09-29 18:38:20 UTC (rev 4183)
+++ branches/cdom/project.xml 2007-09-29 18:38:43 UTC (rev 4184)
@@ -5,7 +5,7 @@
<id>pcgen</id>
<groupId>pcgen</groupId>
<name>PCGen</name>
- <currentVersion>5.13.1</currentVersion>
+ <currentVersion>5.13.2</currentVersion>
<organization>
<name>SourceForge</name>
<url>http://sourceforge.net/</url>
@@ -196,6 +196,16 @@
<dependencies>
<!-- Compiling -->
<dependency>
+ <groupId>cobra</groupId>
+ <artifactId>cobra</artifactId>
+ <version>0.97.2</version>
+ </dependency>
+ <dependency>
+ <groupId>rhino</groupId>
+ <artifactId>js</artifactId>
+ <version>1.6R5</version>
+ </dependency>
+ <dependency>
<groupId>mrj</groupId>
<artifactId>MRJ141Stubs</artifactId>
<version>0</version>
@@ -452,5 +462,10 @@
<name>5.13.1</name>
<tag>release-5.13.1</tag>
</version>
+ <version>
+ <id>5.13.2</id>
+ <name>5.13.2</name>
+ <tag>release-5.13.2</tag>
+ </version>
</versions>
</project>
Modified: branches/cdom/xdocs/changes.xml
===================================================================
--- branches/cdom/xdocs/changes.xml 2007-09-29 18:38:20 UTC (rev 4183)
+++ branches/cdom/xdocs/changes.xml 2007-09-29 18:38:43 UTC (rev 4184)
@@ -5,6 +5,16 @@
<title>PCGen Change Log</title>
</properties>
<body>
+ <release version="5.13.3" date="In SVN" description="Alpha release">
+ <action dev="thpr" type="add" issue="1800407">Deprecate Eqmod CHOOSE:EQBUILDER|1 tag</action>
+ <action dev="thpr" type="add" issue="1798233">Eliminate Cross-Level Interactions in SA tag</action>
+ <action dev="thpr" type="add" issue="1800290">SPELLLIST Token exception for DOMAINS</action>
+ <action dev="thpr" type="fix" issue="1790746">AUTO: must take multiple versions of each Subtoken</action>
+ <action dev="thpr" type="fix" issue="1800720">ADD:LANGUAGE|ALL broken</action>
+ <action dev="thpr" type="fix" issue="1802347">PRESA: Can't Count Properly</action>
+ <action dev="thpr" type="fix" issue="1802352">PRESA: ignores PRExxx tokens on SAs</action>
+ <action dev="thpr" type="add" issue="1784493">Attach REPEATLEVEL to level in Class LST</action>
+ </release>
<release version="5.13.1" date="2007-08-28" description="Alpha release">
<action dev="jdempsey" type="fix" issue="1782465">VFEAT tags ignored.</action>
<action dev="thpr" type="add" issue="1707366">Resolve MOVE related tag order of operations</action>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <th...@us...> - 2007-09-29 18:39:59
|
Revision: 4185
http://pcgen.svn.sourceforge.net/pcgen/?rev=4185&view=rev
Author: thpr
Date: 2007-09-29 11:39:56 -0700 (Sat, 29 Sep 2007)
Log Message:
-----------
Bring CDOM up to 4173
Modified Paths:
--------------
branches/cdom/code/pluginbuild.xml
Modified: branches/cdom/code/pluginbuild.xml
===================================================================
--- branches/cdom/code/pluginbuild.xml 2007-09-29 18:38:43 UTC (rev 4184)
+++ branches/cdom/code/pluginbuild.xml 2007-09-29 18:39:56 UTC (rev 4185)
@@ -2068,10 +2068,10 @@
</patternset>
</fileset>
</jar>
- <jar jarfile="${lstplugins.dir}/LstToken-SA.jar" manifest="${src.java.dir}/plugin/lsttokens/manifest.mf">
+ <jar jarfile="${lstplugins.dir}/LstToken-SAB.jar" manifest="${src.java.dir}/plugin/lsttokens/manifest.mf">
<fileset dir="${build.classes.dir}">
<patternset>
- <include name="plugin/lsttokens/SaLst.class" />
+ <include name="plugin/lsttokens/SabLst.class" />
</patternset>
</fileset>
</jar>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|