63 protected boolean create(MarketAPI createdAt,
boolean barEvent) {
67 setGiverRank(Ranks.CITIZEN);
68 setGiverPost(pickOne(Ranks.POST_SMUGGLER, Ranks.POST_GANGSTER,
69 Ranks.POST_FENCE, Ranks.POST_CRIMINAL));
70 setGiverImportance(pickImportance());
71 setGiverTags(Tags.CONTACT_UNDERWORLD);
72 setGiverFaction(Factions.PIRATES);
74 setGiverRank(Ranks.CITIZEN);
75 String post = pickOne(Ranks.POST_TRADER, Ranks.POST_COMMODITIES_AGENT,
76 Ranks.POST_MERCHANT, Ranks.POST_INVESTOR,
77 Ranks.POST_EXECUTIVE, Ranks.POST_SENIOR_EXECUTIVE,
78 Ranks.POST_PORTMASTER);
80 if (post.equals(Ranks.POST_SENIOR_EXECUTIVE)) {
81 setGiverImportance(pickHighImportance());
83 setGiverImportance(pickImportance());
85 setGiverTags(Tags.CONTACT_TRADE);
87 findOrCreateGiver(createdAt,
false,
false);
91 PersonAPI person = getPerson();
92 if (person ==
null)
return false;
93 MarketAPI market = person.getMarket();
94 if (market ==
null)
return false;
96 if (!setPersonMissionRef(person,
"$proCom_ref")) {
101 setGiverIsPotentialContactOnSuccess();
104 PersonImportance importance = person.getImportance();
105 boolean canOfferRemote = importance.ordinal() >= PersonImportance.MEDIUM.ordinal();
106 boolean preferExpensive = getQuality() >= PersonImportance.HIGH.getValue();
108 if (canOfferRemote && rollProbability(
PROB_REMOTE)) {
115 CommodityOnMarketAPI com =
null;
117 requireMarketIs(market);
118 requireCommodityIsNotPersonnel();
120 preferCommodityIllegal();
122 requireCommodityLegal();
123 requireCommodityDemandAtLeast(1);
125 requireCommoditySurplusAtMost(0);
126 requireCommodityDeficitAtLeast(1);
127 if (preferExpensive) {
128 preferCommodityTags(ReqMode.ALL, Commodities.TAG_EXPENSIVE);
130 com = pickCommodity();
133 if (com ==
null && canOfferRemote) {
139 requireMarketIs(
"jangala");
141 requireMarketIsNot(market);
143 requireMarketFaction(market.getFactionId());
144 requireMarketNotHidden();
145 requireMarketLocationNot(createdAt.getContainingLocation());
146 requireCommodityIsNotPersonnel();
148 preferCommodityIllegal();
150 requireMarketFactionNotHostileTo(Factions.PLAYER);
151 requireCommodityLegal();
152 requireCommodityDemandAtLeast(1);
154 requireCommoditySurplusAtMost(0);
155 requireCommodityDeficitAtLeast(1);
156 if (preferExpensive) {
157 preferCommodityTags(ReqMode.ALL, Commodities.TAG_EXPENSIVE);
159 com = pickCommodity();
162 if (com ==
null)
return false;
169 quantity = getRoundNumber(value / com.getCommodity().getBasePrice());
170 if (com.isIllegal()) {
182 if (com.isIllegal()) {
198 makeImportant(
deliveryContact,
"$proCom_needsCommodity", Stage.TALK_TO_PERSON);
200 setStartingStage(Stage.TALK_TO_PERSON);
201 setSuccessStage(Stage.COMPLETED);
202 setFailureStage(Stage.FAILED);
204 setStageOnMemoryFlag(Stage.COMPLETED,
deliveryContact,
"$proCom_completed");
208 if (getQuality() < 0.5f) {
209 setRepFactionChangesVeryLow();
211 setRepFactionChangesLow();
213 setRepPersonChangesMedium();