@@ -235,7 +235,7 @@ public ItemStack createAttitudeItem(Attitude a, Faction origin, Faction target,
235235 boolean same = current != null && current .getId ().equalsIgnoreCase (a .getId ());
236236 double oldCost = RelationManager .getDiplomaticCost (origin , target , current );
237237 double newCost = RelationManager .getDiplomaticCost (origin , target , a );
238- if (!same && origin .getDiplomacyHandler ().getAvailableCapacity () < newCost - oldCost ) {
238+ if (!same && RelationManager . lacksCapacityForChange ( origin .getDiplomacyHandler ().getAvailableCapacity (), newCost , oldCost ) ) {
239239 lore .add (StringFormatter .formatHex ("#d4bb98You lack diplomatic capacity for this attitude!" ));
240240 lore .add (" " );
241241 lore .add (StringFormatter .formatHex ("#ba3439Unavailable" ));
@@ -325,10 +325,10 @@ public ItemStack createRelationTypeItem(RelationType t, Faction target, Faction
325325 lore .add (StringFormatter .formatHex (wartime ));
326326 lore .add (" " );
327327 lore .add (StringFormatter .formatHex ("#ba3439Unavailable" ));
328- } else if (origin . getDiplomacyHandler (). getAvailableCapacity () < ourCost && ! current . equals ( t ) || target . getDiplomacyHandler (). getAvailableCapacity () < theirCost && ! current . equals ( t . getLink () )) {
329- if (origin . getDiplomacyHandler (). getAvailableCapacity () < ourCost && ! current . equals ( t ))
328+ } else if (RelationManager . actorLacksCapacity ( origin , target , t , current ) || RelationManager . partnerLacksRelationCapacity ( origin , target , t )) {
329+ if (RelationManager . actorLacksCapacity ( origin , target , t , current ))
330330 lore .add (StringFormatter .formatHex ("#d4bb98You lack diplomatic capacity for this relation!" ));
331- if (target . getDiplomacyHandler (). getAvailableCapacity () < theirCost && ! current . equals ( t . getLink ()))
331+ if (RelationManager . partnerLacksRelationCapacity ( origin , target , t ))
332332 lore .add (StringFormatter .formatHex ("#d4bb98They lack diplomatic capacity for this relation!" ));
333333 lore .add (" " );
334334 lore .add (StringFormatter .formatHex ("#ba3439Unavailable" ));
@@ -437,40 +437,32 @@ public ItemStack createTradeAgreementTypeItem(Player p, RelationType t, Faction
437437 lore .add (" " );
438438 if (full ) {
439439 RelationType current = origin .getDiplomacyHandler ().getTradeRelation (target .getId ());
440+ RelationType theirCurrent = target .getDiplomacyHandler ().getTradeRelation (origin .getId ());
441+ boolean weLack = RelationManager .actorLacksCapacity (origin , target , t , current );
442+ boolean theyLack = RelationManager .partnerLacksOverlayCapacity (origin , target , t , theirCurrent );
440443 if (current != null && current .hasLock ()) {
441444 lore .add (StringFormatter .formatHex ("#d4bb98You have the agreement " +current .getName ()+"#d4bb98, which binds you and cannot be changed by you alone." ));
442445 lore .add (" " );
443446 lore .add (StringFormatter .formatHex ("#ba3439Unavailable" ));
444- } else if (current != null && ( origin . getDiplomacyHandler (). getAvailableCapacity () < ourCost && ! current . equals ( t ) || target . getDiplomacyHandler (). getAvailableCapacity () < theirCost && ! current . equals ( t . getLink ())) ) {
445- if (origin . getDiplomacyHandler (). getAvailableCapacity () < ourCost && ! current . equals ( t ))
447+ } else if (weLack || theyLack ) {
448+ if (weLack )
446449 lore .add (StringFormatter .formatHex ("#d4bb98You lack diplomatic capacity for this relation!" ));
447- if (target . getDiplomacyHandler (). getAvailableCapacity () < theirCost && ! current . equals ( t . getLink ()))
450+ if (theyLack )
448451 lore .add (StringFormatter .formatHex ("#d4bb98They lack diplomatic capacity for this relation!" ));
449452 lore .add (" " );
450453 lore .add (StringFormatter .formatHex ("#ba3439Unavailable" ));
454+ } else if (current != null && current .equals (t )) {
455+ lore .add (StringFormatter .formatHex ("#28ed70Current" ));
456+ lore .add (StringFormatter .formatHex ("#28ed70Click to end agreement" ));
457+ m .addItemFlags (ItemFlag .HIDE_ENCHANTS );
458+ m .addEnchant (Enchantment .UNBREAKING , 1 , true );
459+ if (full ) EconomicImpact .applyTradeAgreementChange (lore , p , origin , target , null , false , m , false );
460+ } else if (t .isMutual ()) {
461+ lore .add (StringFormatter .formatHex ("#28ed70Click to request agreement" ));
462+ if (full ) EconomicImpact .applyTradeAgreementChange (lore , p , origin , target , t , false , m , false );
451463 } else {
452- if (current != null && current .equals (t )) {
453- lore .add (StringFormatter .formatHex ("#28ed70Current" ));
454- lore .add (StringFormatter .formatHex ("#28ed70Click to end agreement" ));
455- m .addItemFlags (ItemFlag .HIDE_ENCHANTS );
456- m .addEnchant (Enchantment .UNBREAKING , 1 , true );
457- if (full ) EconomicImpact .applyTradeAgreementChange (lore , p , origin , target , null , false , m , false );
458- } else if (origin .getDiplomacyHandler ().getAvailableCapacity () > ourCost && target .getDiplomacyHandler ().getAvailableCapacity () > theirCost ) {
459- if (t .isMutual ()) {
460- lore .add (StringFormatter .formatHex ("#28ed70Click to request agreement" ));
461- if (full ) EconomicImpact .applyTradeAgreementChange (lore , p , origin , target , t , false , m , false );
462- } else {
463- lore .add (StringFormatter .formatHex ("#28ed70Click to set" ));
464- if (full ) EconomicImpact .applyTradeAgreementChange (lore , p , origin , target , t , false , m , false );
465- }
466- } else {
467- if (origin .getDiplomacyHandler ().getAvailableCapacity () < ourCost )
468- lore .add (StringFormatter .formatHex ("#d4bb98You lack diplomatic capacity for this relation!" ));
469- if (target .getDiplomacyHandler ().getAvailableCapacity () < theirCost )
470- lore .add (StringFormatter .formatHex ("#d4bb98They lack diplomatic capacity for this relation!" ));
471- lore .add (" " );
472- lore .add (StringFormatter .formatHex ("#ba3439Unavailable" ));
473- }
464+ lore .add (StringFormatter .formatHex ("#28ed70Click to set" ));
465+ if (full ) EconomicImpact .applyTradeAgreementChange (lore , p , origin , target , t , false , m , false );
474466 }
475467 } else {
476468 lore .add (StringFormatter .formatHex ("#28ed70Click for more information" ));
@@ -540,14 +532,17 @@ public ItemStack createTreatyTypeItem(Player p, RelationType t, Faction target,
540532 lore .add (" " );
541533 if (full ) {
542534 RelationType current = origin .getDiplomacyHandler ().getTreatyRelation (target .getId ());
535+ RelationType theirCurrent = target .getDiplomacyHandler ().getTreatyRelation (origin .getId ());
536+ boolean weLack = !t .isClearTreaty () && RelationManager .actorLacksCapacity (origin , target , t , current );
537+ boolean theyLack = !t .isClearTreaty () && RelationManager .partnerLacksOverlayCapacity (origin , target , t , theirCurrent );
543538 if (current != null && current .hasLock ()) {
544539 lore .add (StringFormatter .formatHex ("#d4bb98You have the treaty " +current .getName ()+"#d4bb98, which binds you and cannot be changed by you alone." ));
545540 lore .add (" " );
546541 lore .add (StringFormatter .formatHex ("#ba3439Unavailable" ));
547- } else if (! t . isClearTreaty () && current != null && ( origin . getDiplomacyHandler (). getAvailableCapacity () < ourCost && ! current . equals ( t ) || target . getDiplomacyHandler (). getAvailableCapacity () < theirCost && ! current . equals ( t . getLink ())) ) {
548- if (origin . getDiplomacyHandler (). getAvailableCapacity () < ourCost && ! current . equals ( t ))
542+ } else if (weLack || theyLack ) {
543+ if (weLack )
549544 lore .add (StringFormatter .formatHex ("#d4bb98You lack diplomatic capacity for this relation!" ));
550- if (target . getDiplomacyHandler (). getAvailableCapacity () < theirCost && ! current . equals ( t . getLink ()))
545+ if (theyLack )
551546 lore .add (StringFormatter .formatHex ("#d4bb98They lack diplomatic capacity for this relation!" ));
552547 lore .add (" " );
553548 lore .add (StringFormatter .formatHex ("#ba3439Unavailable" ));
@@ -561,19 +556,10 @@ public ItemStack createTreatyTypeItem(Player p, RelationType t, Faction target,
561556 lore .add (StringFormatter .formatHex ("#28ed70Current" ));
562557 m .addItemFlags (ItemFlag .HIDE_ENCHANTS );
563558 m .addEnchant (Enchantment .UNBREAKING , 1 , true );
564- } else if (origin .getDiplomacyHandler ().getAvailableCapacity () >= ourCost && target .getDiplomacyHandler ().getAvailableCapacity () >= theirCost ) {
565- if (t .isMutual ()) {
566- lore .add (StringFormatter .formatHex ("#28ed70Click to request" ));
567- } else {
568- lore .add (StringFormatter .formatHex ("#28ed70Click to set" ));
569- }
559+ } else if (t .isMutual ()) {
560+ lore .add (StringFormatter .formatHex ("#28ed70Click to request" ));
570561 } else {
571- if (origin .getDiplomacyHandler ().getAvailableCapacity () < ourCost )
572- lore .add (StringFormatter .formatHex ("#d4bb98You lack diplomatic capacity for this relation!" ));
573- if (target .getDiplomacyHandler ().getAvailableCapacity () < theirCost )
574- lore .add (StringFormatter .formatHex ("#d4bb98They lack diplomatic capacity for this relation!" ));
575- lore .add (" " );
576- lore .add (StringFormatter .formatHex ("#ba3439Unavailable" ));
562+ lore .add (StringFormatter .formatHex ("#28ed70Click to set" ));
577563 }
578564 } else {
579565 lore .add (StringFormatter .formatHex ("#28ed70Click for more information" ));
0 commit comments