001package com.fs.starfarer.api.characters; 002 003import java.util.List; 004 005import com.fs.starfarer.api.campaign.CampaignFleetAPI; 006import com.fs.starfarer.api.campaign.TextPanelAPI; 007import com.fs.starfarer.api.campaign.econ.MarketAPI; 008import com.fs.starfarer.api.combat.MutableStat; 009import com.fs.starfarer.api.combat.StatBonus; 010import com.fs.starfarer.api.util.DynamicStatsAPI; 011 012public interface MutableCharacterStatsAPI { 013 014 public static interface SkillLevelAPI { 015 float getLevel(); 016 void setLevel(float level); 017 SkillSpecAPI getSkill(); 018 } 019 020 int getLevel(); 021 long getXP(); 022 023 024// int getSkillPoints(); 025// int getAptitudePoints(); 026// void setSkillPoints(int points); 027// void setAptitudePoints(int points); 028 029// void addAptitudePoints(int points); 030// void addSkillPoints(int points); 031 void increaseSkill(String id); 032 void increaseAptitude(String id); 033 034 void setSkillLevel(String id, float level); 035 void setAptitudeLevel(String id, float level); 036 float getAptitudeLevel(String id); 037 038 /** 039 * Only returns whole numbers. Float is used for convenience to avoid some extra casting. Other methods work likewise. 040 * @param id 041 * @return 042 */ 043 float getSkillLevel(String id); 044 045 void addXP(long xp, TextPanelAPI textPanel, boolean withMessage, boolean allowBonusXP, boolean withLevelUp); 046 void addXP(long xp, TextPanelAPI textPanel, boolean withMessage); 047 void addXP(long xp, TextPanelAPI textPanel); 048 void addXP(long xp); 049 050 051 MutableStat getWeaponOPCostMult(); 052 StatBonus getShipOrdnancePointBonus(); 053 054 StatBonus getSmallWeaponOPCost(); 055 StatBonus getMediumWeaponOPCost(); 056 StatBonus getLargeWeaponOPCost(); 057 058 MutableStat getRepairRateMult(); 059 060 MutableStat getCommandPoints(); 061 062 MutableStat getMarineEffectivnessMult(); 063 //MutableStat getCrewXPGainMult(); 064 065 //MutableStat getFleetSizeTravelPenaltyMult(); 066 //StatBonus getCombatDeploymentCost(); 067 068 StatBonus getMaxCapacitorsBonus(); 069 StatBonus getMaxVentsBonus(); 070 071 //StatBonus getTravelSpeedBonus(); 072 073 void levelUpIfNeeded(); 074 void levelUpIfNeeded(TextPanelAPI textPanel); 075 076 DynamicStatsAPI getDynamic(); 077 078 int getPoints(); 079 void setPoints(int points); 080 void addPoints(int points); 081 MutableStat getOfficerNumber(); 082 CampaignFleetAPI getFleet(); 083 void setFleet(CampaignFleetAPI fleet); 084 void refreshCharacterStatsEffects(); 085 boolean isSkipRefresh(); 086 void setSkipRefresh(boolean skipRefresh); 087 List<SkillLevelAPI> getSkillsCopy(); 088 List<String> getGrantedAbilityIds(); 089 MutableStat getAdminNumber(); 090 MutableStat getOutpostNumber(); 091 092 void refreshGovernedOutpostEffects(MarketAPI market); 093 void refreshAllOutpostsEffects(MarketAPI market); 094 void refreshAllOutpostsEffectsForPlayerOutposts(); 095 long getBonusXp(); 096 void setBonusXp(long bonusXp); 097 void addBonusXP(long bonusXp, boolean withMessage, TextPanelAPI textPanel, boolean topScreenMessage); 098 099 /** 100 * Defaults to no bonus XP being granted. 101 * @param points 102 * @param withMessage 103 * @param textPanel 104 * @param topScreenMessage 105 */ 106 void spendStoryPoints(int points, boolean withMessage, TextPanelAPI textPanel, boolean topScreenMessage, String logText); 107 void spendStoryPoints(int points, boolean withMessage, TextPanelAPI textPanel, boolean topScreenMessage, float bonusXPFraction, String logText); 108 int getStoryPoints(); 109 void setStoryPoints(int storyPoints); 110 void addStoryPoints(int storyPoints); 111 void addXP(long xp, TextPanelAPI textPanel, boolean withMessage, boolean allowBonusXP); 112 113 /** 114 * Will be gained on reaching maximum level. Increased by using story points before maximum level is reached. 115 * @return 116 */ 117 long getDeferredBonusXp(); 118 void setDeferredBonusXp(long deferredBonusXp); 119 void setLevel(int level); 120 boolean isPlayerStats(); 121 void addStoryPoints(int points, TextPanelAPI textPanel, boolean makeCharTabFlash); 122 long getBonusXPForSpendingStoryPointBeforeSpendingIt(); 123 long getTotalBonusAndDeferredXPForStoryPoint(); 124 long getBonusXPUsed(long normalXP); 125 void setOnlyAddBonusXPDoNotSpendStoryPoints(boolean onlyAddBonusXPDoNotSpendStoryPoints); 126 void decreaseSkill(String id); 127 boolean hasSkill(String id); 128 void refreshCharacterStatsEffects(boolean withColonyEffects); 129 void setBonusXPGainReason(String bonusXPGainReason); 130 void setXP(long xp); 131 132 133}