|
From: <th...@us...> - 2014-04-28 00:24:35
|
Revision: 23731
http://sourceforge.net/p/pcgen/code/23731
Author: thpr
Date: 2014-04-28 00:24:29 +0000 (Mon, 28 Apr 2014)
Log Message:
-----------
Change SKILLSIT output token to be conditional on being different from the base skill
count function needed a similar change, and also needed to support skill filters.
Issue#: NEWTAG-427, NEWTAG-428
Modified Paths:
--------------
Trunk/pcgen/code/src/java/pcgen/cdom/helper/SkillSituation.java
Trunk/pcgen/code/src/java/pcgen/util/JepCountType.java
Trunk/pcgen/code/src/java/plugin/exporttokens/SkillSitToken.java
Modified: Trunk/pcgen/code/src/java/pcgen/cdom/helper/SkillSituation.java
===================================================================
--- Trunk/pcgen/code/src/java/pcgen/cdom/helper/SkillSituation.java 2014-04-27 20:04:37 UTC (rev 23730)
+++ Trunk/pcgen/code/src/java/pcgen/cdom/helper/SkillSituation.java 2014-04-28 00:24:29 UTC (rev 23731)
@@ -24,8 +24,9 @@
private final Skill skill;
private final String situation;
+ private final double bonus;
- public SkillSituation(Skill sk, String sit)
+ public SkillSituation(Skill sk, String sit, double sitbonus)
{
if (sk == null)
{
@@ -37,6 +38,7 @@
}
skill = sk;
situation = sit;
+ bonus = sitbonus;
}
public Skill getSkill()
@@ -48,4 +50,9 @@
{
return situation;
}
+
+ public double getSituationBonus()
+ {
+ return bonus;
+ }
}
Modified: Trunk/pcgen/code/src/java/pcgen/util/JepCountType.java
===================================================================
--- Trunk/pcgen/code/src/java/pcgen/util/JepCountType.java 2014-04-27 20:04:37 UTC (rev 23730)
+++ Trunk/pcgen/code/src/java/pcgen/util/JepCountType.java 2014-04-28 00:24:29 UTC (rev 23731)
@@ -47,6 +47,7 @@
import pcgen.cdom.enumeration.MapKey;
import pcgen.cdom.enumeration.Nature;
import pcgen.cdom.enumeration.ObjectKey;
+import pcgen.cdom.enumeration.SkillFilter;
import pcgen.cdom.enumeration.Type;
import pcgen.core.Ability;
import pcgen.core.AbilityUtilities;
@@ -827,19 +828,38 @@
public Number count(PlayerCharacter pc, Object[] params)
throws ParseException
{
- if (params.length != 0)
+ SkillFilter sf = null;
+ if (params.length > 1)
{
- Logging.errorPrint("count(\"SKILLSIT\") does not take parameters");
+ Logging.errorPrint("count(\"SKILLSIT\") allows 0 or 1 parameters");
}
+ if (params.length == 1)
+ {
+ Object filtername = params[0];
+ sf = SkillFilter.getByToken(filtername.toString());
+ if (sf == null)
+ {
+ Logging.errorPrint("Unable to find Skill Filter: "
+ + filtername);
+ }
+ }
int count = 0;
Collection<Skill> skills = pc.getSkillSet();
for (Skill sk : skills)
{
- if (pc.includeSkill(sk, null)
+ if (pc.includeSkill(sk, sf)
&& sk.qualifies(pc, null))
{
count++; //For the skill
- count += sk.getSizeOfListFor(ListKey.SITUATION);
+ for (String situation : sk.getSafeListFor(ListKey.SITUATION))
+ {
+ double bonus = pc.getTotalBonusTo("SITUATION", sk.getKeyName()
+ + "=" + situation);
+ if (bonus > .01)
+ {
+ count++;
+ }
+ }
}
}
return Double.valueOf(count);
Modified: Trunk/pcgen/code/src/java/plugin/exporttokens/SkillSitToken.java
===================================================================
--- Trunk/pcgen/code/src/java/plugin/exporttokens/SkillSitToken.java 2014-04-27 20:04:37 UTC (rev 23730)
+++ Trunk/pcgen/code/src/java/plugin/exporttokens/SkillSitToken.java 2014-04-28 00:24:29 UTC (rev 23731)
@@ -150,9 +150,20 @@
if (i < numSits)
{
Collections.sort(situations);
- return new SkillSituation(sk, situations.get(i));
}
- i -= numSits;
+ for (String situation : situations)
+ {
+ double bonus = pc.getTotalBonusTo("SITUATION", sk.getKeyName()
+ + "=" + situation);
+ if (bonus > .01)
+ {
+ if (i == 0)
+ {
+ return new SkillSituation(sk, situations.get(i), bonus);
+ }
+ i--; //Wasn't this situation
+ }
+ }
}
}
}
@@ -172,7 +183,9 @@
String situation = skillName.substring(equalLoc + 1);
Skill sk = Globals.getContext().ref.silentlyGetConstructedCDOMObject(
Skill.class, skillName.substring(0, equalLoc));
- return new SkillSituation(sk, situation);
+ double bonus = pc.getTotalBonusTo("SITUATION", sk.getKeyName()
+ + "=" + situation);
+ return new SkillSituation(sk, situation, bonus);
}
}
return skill;
@@ -242,15 +255,17 @@
Skill skill;
boolean isSituation;
String situation;
+ SkillSituation sit;
if (skillSit instanceof Skill)
{
+ sit = null;
skill = (Skill) skillSit;
isSituation = false;
situation = "";
}
else if (skillSit instanceof SkillSituation)
{
- SkillSituation sit = (SkillSituation) skillSit;
+ sit = (SkillSituation) skillSit;
skill = sit.getSkill();
isSituation = true;
situation = sit.getSituation();
@@ -277,9 +292,7 @@
+ SkillModifier.modifier(skill, pc).intValue();
if (isSituation)
{
- rank +=
- pc.getTotalBonusTo("SITUATION",
- skill.getKeyName() + "=" + situation);
+ rank += sit.getSituationBonus();
}
if (SettingsHandler.getGame().hasSkillRankDisplayText())
{
@@ -309,9 +322,7 @@
int mod = SkillModifier.modifier(skill, pc).intValue();
if (isSituation)
{
- mod +=
- pc.getTotalBonusTo("SITUATION",
- skill.getKeyName() + "=" + situation);
+ mod += sit.getSituationBonus();
}
retValue.append(Integer.toString(mod));
break;
@@ -328,9 +339,7 @@
int misc = SkillModifier.modifier(skill, pc).intValue();
if (isSituation)
{
- misc +=
- pc.getTotalBonusTo("SITUATION",
- skill.getKeyName() + "=" + situation);
+ misc += sit.getSituationBonus();
}
misc -= SkillModifier.getStatMod(skill, pc);
retValue.append(Integer.toString(misc));
@@ -393,9 +402,7 @@
.intValue();
if (isSituation)
{
- mRank +=
- pc.getTotalBonusTo("SITUATION",
- skill.getKeyName() + "=" + situation);
+ mRank += sit.getSituationBonus();
}
retValue.append(Integer.toString(mRank));
}
@@ -417,9 +424,7 @@
.intValue();
if (isSituation)
{
- mRank +=
- pc.getTotalBonusTo("SITUATION",
- skill.getKeyName() + "=" + situation);
+ mRank += sit.getSituationBonus();
}
retValue.append(Integer.toString(mRank));
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|