Log in

Thoughts on Creating Specific New Cards

Force of Will:

  • Start by creating the card for 3UU
  • Add the cost reduction code (like affinity) to reduce its cost by 3UU.
  • Add code to the 'can this be played' event to check for either 3UU available or a blue card in hand.
  • The hand-checking code from brainstorm could be modified to check color instead of type, so check for a blue card.
  • When the spell is played, give the user a dialog box if both choices are available, or just force one payment if only 1 is available.
  • Again use the brainstorm code to force the user to choose a blue card and RFG it. (and lose 1 life)
  • Chain on counterspell. Done.

Hybrid:

  • set mana cost to the actual cost, but use white mana as the hybrid symbol.

This one's a little complicated so I'm going to write pseudocode. I envision that we would write a proc that would handle EVERY hybrid card's mana cost with no additional coding.

generalSection (i.e. no event)
*hybridColor1 = color of card 1, determined by static color of card (see invasion apprentices)
*hybridColor2 = color of card 2
*hybridManaTotal = white mana required
 
if( costReductionEvent){
  cost = colorLessCost
}
 
if( canBePlayedEvent){
  for i = 0..hybridMana{
    isManaAvailable(colorless cost and i of hybridColor1 and hybridMana-i of hybridColor2)
    if yes, spell can be played.
  }
  otherwise spell cannot be played
}
 
if( playingSpellPayingCosts ){
  hybridText = use an if..else to set this based on static color.  There should be only 10 choices, unless you also include cards   like spectral procession.  Even then, there are 15 choices (sorry reaper king)
  for i = 0..hybridMana{
    if isManaAvailable(hybridColor1) and isManaAvailable(hybridColor2)
       createDialog simple 2-part dialog using hybridText
       if( 0 ) is chosen, charge hybridColor1
       if( 1 ) is chosen, charge hybridColor2
    } 
    else if isManaAvailable(hybridColor1)
       charge hybridColor1
    else if isManaAvailable(hybridColor2)
       charge hybridColor2
    }
  }
}

Then chain on the regular spell.

Equipment

Equipment are basically enchant creatures that have an activated ability to change creatures. So take an enchant creature (say Flight) and...

  • Update the manalink/magic stuff to turn the card into an artifact, and enable the 'activated ability' flag.
  • In the code....
  • Change the code that attaches to a creature when it comes into play to happen on activation instead. (i.e. change 6C to 6D)
  • Change so that you can only target creatures you control.
  • Remove the 'goes to graveyard code' (the call to 4779f0)
  • Add a 74 (can ability be played) section. It can only be played as a sorcery. It should only be active if you have a creature. (copy this call from ashnod's battlegear)
  • I don't know any code for 'can only be played as a sorcery', but we at least have the code for 'during your main phase'.
  • Add any additional equip costs, such as mana. If you do, make sure to update 6D to charge those costs.
  • Add a line in 6D that says if the target is dead, don't unequip the current creature. (I haven't tried this)
  • Done.

Here is the patch for an equipment version of flight (no costs, no checks for when to equip) SKYPATCH 004BE620 000BDC20 277 79

55
8BEC
56
837D1074
750A
  • E85198F5FF
E9FE000000
837D106C
7578
8B450C
39058C397A00
756D
8B4508
3905848C7300
7562
6896764D00
6A00
  • E8D038F4FF
83C408
BAAC5C7100
  • E8F7BCF5FF
85C0
7436
837D0801
753A
F6054006790002
7531
837E7400
7507
832DA8317A0018
8B4674
8B4E78
  • E8EC33F4FF
F6462820
7413
832DA8317A0063
EB0A
C70594F14E0001000000
E97E000000
837D1071
7540
33C0
  • E891ABF5FF
85C0
7415
8B4674
8B4E78
884650
894E04
C7463801000000
EB1A
6A01
FF750C
FF7508
  • E80B93FBFF
83C40C
C70594F14E0001000000
C6463600
EB38
837D1034
7532
8B4508
8B4D0C
  • E87733F4FF
837E3800
7421
A18C397A00
394678
7517
8B15848C7300
395674
750C
83F8FF
7407
830DB405620020
33C0
5E
C9
C3