For the shooter, I'm not sure how, exactly, a Shooter (Fireball) works, so at best, I could spawn a Shooter on top of the FFC, and have it follow the FFC around and stuff. Let me know if that's what you want.
For the mirror, well:
Code:
bool itemMagicMirror = false;
int magicMirrorDestDMap = 0;
const int warpFrames = 60;
void doMagicMirror() {
int existingDMap = Game->GetCurDMap();
Link->Action = LA_FROZEN;
for(int i = 0; i < warpFrames; i++) {
Screen->Wavy = i;
Waitframe();
}
//insert other flashy graphics here
Link->PitWarp(magicMirrorDestDMap, Game->GetCurDMapScreen());
Waitframe();
Link->Action = LA_FROZEN;
Game->PlaySound(SFX_SUMMON);
if(Screen->isSolid(Link->X, Link->Y + 8)) {
for(int i = 0; i < warpFrames; i++) {
Screen->Wavy = i;
Waitframe();
}
Link->PitWarp(existingDMap, Game->GetCurDMapScreen());
}
Waitframes(warpFrames);
itemMagicMirror = false;
Link->Action = LA_NONE;
}
item script MagicMirror {
void run(int dmap1A, int dmap1B, int dmap2A, int dmap2B, int dmap3A, int dmap3B, int dmap4A, int dmap4B) {
int dmap = Game->GetCurDMap() + 1;
if(dmap == dmap1A && dmap1B > 0) {
magicMirrorDestDMap = dmap1B - 1;
itemMagicMirror = true;
} else if(dmap == dmap1B && dmap1A > 0) {
magicMirrorDestDMap = dmap1A - 1;
itemMagicMirror = true;
} else if(dmap == dmap2A && dmap2B > 0) {
magicMirrorDestDMap = dmap2B - 1;
itemMagicMirror = true;
} else if(dmap == dmap2B && dmap2A > 0) {
magicMirrorDestDMap = dmap2A - 1;
itemMagicMirror = true;
} else if(dmap == dmap3A && dmap3B > 0) {
magicMirrorDestDMap = dmap3B - 1;
itemMagicMirror = true;
} else if(dmap == dmap3B && dmap3A > 0) {
magicMirrorDestDMap = dmap3A - 1;
itemMagicMirror = true;
} else if(dmap == dmap4A && dmap4B > 0) {
magicMirrorDestDMap = dmap4B - 1;
itemMagicMirror = true;
} else if(dmap == dmap4B && dmap4A > 0) {
magicMirrorDestDMap = dmap4A - 1;
itemMagicMirror = true;
}
}
}
Put this in your script file, and in your Slot 2 Script, put this line:
Code:
if(itemMagicMirror) doMagicMirror();
(This should be in your while(true) loop. Let me know if you don't know what I mean.)
With this item, you can have up to four "pairs" of DMaps you can warp between. That is, in each pair, you can warp freely from A to B, and from B to A.
To set these pairs up, you set the D0-7 values in the Item Editor. So, after you import the script, create the Magic Mirror item and set it to a Custom Itemclass. Then, on the Action tab, set the Script box to the slot number of the Magic Mirror script.
Finally, on the Arguments tab, set D0 and D1 to the first pair, D2 and D3 to the second pair, etc. Please note that the pairs are set as (DMap Number + 1). So, if you want to be able to warp between DMaps 1 and 3, put 2 and 4 in the boxes.
Let me know if you have any trouble!