001package com.fs.starfarer.api.impl.campaign; 002 003import java.util.Random; 004 005import com.fs.starfarer.api.Global; 006import com.fs.starfarer.api.campaign.AICoreOfficerPlugin; 007import com.fs.starfarer.api.campaign.econ.CommoditySpecAPI; 008import com.fs.starfarer.api.characters.FullName; 009import com.fs.starfarer.api.characters.FullName.Gender; 010import com.fs.starfarer.api.characters.PersonAPI; 011import com.fs.starfarer.api.impl.campaign.ids.Commodities; 012import com.fs.starfarer.api.impl.campaign.ids.Personalities; 013import com.fs.starfarer.api.impl.campaign.ids.Ranks; 014import com.fs.starfarer.api.impl.campaign.ids.Skills; 015 016/** 017 * 018 */ 019public class AICoreOfficerPluginImpl extends BaseAICoreOfficerPluginImpl implements AICoreOfficerPlugin { 020 021 /** 022 * Extra points added to deployment recovery cost for computing the effect of the "Automated Ships" skill. 023 */ 024// public static int OMEGA_POINTS = 140; 025// public static int ALPHA_POINTS = 70; 026// public static int BETA_POINTS = 50; 027// public static int GAMMA_POINTS = 30; 028 public static int OMEGA_POINTS = 0; 029 public static int ALPHA_POINTS = 0; 030 public static int BETA_POINTS = 0; 031 public static int GAMMA_POINTS = 0; 032 033 /** 034 * Multiplier to deployment recovery cost for computing the effect of the "Automated Ships" skill. 035 */ 036 public static float OMEGA_MULT = 5; 037 public static float ALPHA_MULT = 4; 038 public static float BETA_MULT = 3; 039 public static float GAMMA_MULT = 2; 040 041 static { 042// if (BaseSkillEffectDescription.USE_RECOVERY_COST) { 043// OMEGA_POINTS = 20; 044// ALPHA_POINTS = 10; 045// BETA_POINTS = 7; 046// GAMMA_POINTS = 5; 047// } 048 } 049 050 051 public PersonAPI createPerson(String aiCoreId, String factionId, Random random) { 052 if (random == null) random = new Random(); 053 054 PersonAPI person = Global.getFactory().createPerson(); 055 person.setFaction(factionId); 056 person.setAICoreId(aiCoreId); 057 058 CommoditySpecAPI spec = Global.getSettings().getCommoditySpec(aiCoreId); 059 boolean alpha = Commodities.ALPHA_CORE.equals(aiCoreId); 060 boolean beta = Commodities.BETA_CORE.equals(aiCoreId); 061 boolean gamma = Commodities.GAMMA_CORE.equals(aiCoreId); 062 boolean omega = Commodities.OMEGA_CORE.equals(aiCoreId); 063 064 person.getStats().setSkipRefresh(true); 065 066 person.setName(new FullName(spec.getName(), "", Gender.ANY)); 067 int points = 0; 068 float mult = 1f; 069 if (omega) { // assume it's not going to be integrated, no reason to do it - same as assuming it's always integrated 070 person.setPortraitSprite("graphics/portraits/characters/omega.png"); 071 person.getStats().setLevel(9); 072 person.getStats().setSkillLevel(Skills.HELMSMANSHIP, 2); 073 person.getStats().setSkillLevel(Skills.TARGET_ANALYSIS, 2); 074 person.getStats().setSkillLevel(Skills.IMPACT_MITIGATION, 2); 075 //person.getStats().setSkillLevel(Skills.SHIELD_MODULATION, 2); 076 person.getStats().setSkillLevel(Skills.FIELD_MODULATION, 2); 077 //person.getStats().setSkillLevel(Skills.SYSTEMS_EXPERTISE, 2); 078 person.getStats().setSkillLevel(Skills.GUNNERY_IMPLANTS, 2); 079 //person.getStats().setSkillLevel(Skills.RELIABILITY_ENGINEERING, 2); 080 person.getStats().setSkillLevel(Skills.COMBAT_ENDURANCE, 2); 081 person.getStats().setSkillLevel(Skills.DAMAGE_CONTROL, 2); 082 person.getStats().setSkillLevel(Skills.POINT_DEFENSE, 2); 083 person.getStats().setSkillLevel(Skills.ENERGY_WEAPON_MASTERY, 2); 084 person.getStats().setSkillLevel(Skills.OMEGA_ECM, 2); 085 points = OMEGA_POINTS; 086 mult = OMEGA_MULT; 087 } else if (alpha) { 088 person.setPortraitSprite("graphics/portraits/portrait_ai2b.png"); 089 person.getStats().setLevel(7); 090 person.getStats().setSkillLevel(Skills.HELMSMANSHIP, 2); 091 person.getStats().setSkillLevel(Skills.TARGET_ANALYSIS, 2); 092 person.getStats().setSkillLevel(Skills.IMPACT_MITIGATION, 2); 093 //person.getStats().setSkillLevel(Skills.SHIELD_MODULATION, 2); 094 person.getStats().setSkillLevel(Skills.FIELD_MODULATION, 2); 095 //person.getStats().setSkillLevel(Skills.SYSTEMS_EXPERTISE, 2); 096 person.getStats().setSkillLevel(Skills.GUNNERY_IMPLANTS, 2); 097 //person.getStats().setSkillLevel(Skills.RELIABILITY_ENGINEERING, 2); 098 person.getStats().setSkillLevel(Skills.COMBAT_ENDURANCE, 2); 099 person.getStats().setSkillLevel(Skills.DAMAGE_CONTROL, 2); 100 points = ALPHA_POINTS; 101 mult = ALPHA_MULT; 102 } else if (beta) { 103 person.setPortraitSprite("graphics/portraits/portrait_ai3b.png"); 104 person.getStats().setLevel(5); 105 person.getStats().setSkillLevel(Skills.HELMSMANSHIP, 2); 106 person.getStats().setSkillLevel(Skills.TARGET_ANALYSIS, 2); 107 person.getStats().setSkillLevel(Skills.IMPACT_MITIGATION, 2); 108 person.getStats().setSkillLevel(Skills.GUNNERY_IMPLANTS, 2); 109 //person.getStats().setSkillLevel(Skills.RELIABILITY_ENGINEERING, 2); 110 person.getStats().setSkillLevel(Skills.COMBAT_ENDURANCE, 2); 111 points = BETA_POINTS; 112 mult = BETA_MULT; 113 } else if (gamma) { 114 person.setPortraitSprite("graphics/portraits/portrait_ai1b.png"); 115 person.getStats().setLevel(3); 116 person.getStats().setSkillLevel(Skills.HELMSMANSHIP, 2); 117 person.getStats().setSkillLevel(Skills.IMPACT_MITIGATION, 2); 118 //person.getStats().setSkillLevel(Skills.RELIABILITY_ENGINEERING, 2); 119 person.getStats().setSkillLevel(Skills.COMBAT_ENDURANCE, 2); 120 points = GAMMA_POINTS; 121 mult = GAMMA_MULT; 122 } 123 124 if (points != 0) { 125 person.getMemoryWithoutUpdate().set(AUTOMATED_POINTS_VALUE, points); 126 } 127 person.getMemoryWithoutUpdate().set(AUTOMATED_POINTS_MULT, mult); 128 129 person.setPersonality(Personalities.RECKLESS); 130 person.setRankId(Ranks.SPACE_CAPTAIN); 131 person.setPostId(null); 132 133 person.getStats().setSkipRefresh(false); 134 135 return person; 136 } 137 138} 139 140 141 142