MCPcopy Create free account
hub / github.com/Card-Forge/forge / canTransform

Method canTransform

forge-game/src/main/java/forge/game/card/Card.java:924–958  ·  view source on GitHub ↗
(SpellAbility cause)

Source from the content-addressed store, hash-verified

922 }
923
924 public boolean canTransform(SpellAbility cause) {
925 if (isFaceDown()) {
926 return false;
927 }
928 Card transformCard = this;
929 if (hasMergedCard()) {
930 boolean hasTransformCard = false;
931 for (final Card c : getMergedCards()) {
932 if (c.isTransformable()) {
933 hasTransformCard = true;
934 transformCard = c;
935 break;
936 }
937 }
938 if (!hasTransformCard) {
939 return false;
940 }
941 } else if (!isTransformable()) {
942 return false;
943 }
944
945 // below only when in play
946 if (!isInPlay()) {
947 return true;
948 }
949
950 CardStateName destState = transformCard.backside ? CardStateName.Original : CardStateName.Backside;
951
952 // use Original State for the transform check
953 if (!transformCard.getOriginalState(destState).getType().isPermanent()) {
954 return false;
955 }
956
957 return !StaticAbilityCantTransform.cantTransform(this, cause);
958 }
959
960 @Override
961 public final String getName() {

Callers 5

changeCardStateMethod · 0.95
resolveMethod · 0.95
testCloneTransformMethod · 0.95
checkApiLogicMethod · 0.95

Calls 9

isFaceDownMethod · 0.95
hasMergedCardMethod · 0.95
getMergedCardsMethod · 0.95
isTransformableMethod · 0.95
isInPlayMethod · 0.95
getOriginalStateMethod · 0.95
cantTransformMethod · 0.95
isPermanentMethod · 0.65
getTypeMethod · 0.65

Tested by 1

testCloneTransformMethod · 0.76