AS3 Room edit code to go to proper catalog

#1

forts.swf (159.5 KB)
I’m trying to use this SWF from the Make Your Mark Ultimate Jam on AS2

The problem is that the SWF appears to have AS3 code. Because of this, the party catalog in the room doesn’t work (I think because it’s not looking for the right local path) while everything else does. When you click on the area it should be in, nothing happens.

Is there a way to modify the existing code somehow to point it to the right path, which is the local path “party_catalogue” which I have set in my local crumbs, or do I have to convert the entire room to AS2?

#2

This room (as many other rooms for the AS3 client), is not compiled in AS3 as you said. This room is made with AS2 code. You can tell this because it makes direct calls to the shell (which is also written in AS2) without a bridge.

example:
this._SHELL.getLanguageAbbreviation()

So the only real issue here is compatibility with the APIs available within the AS2 client vs the AS3 one.
The bulk of the code for the room is in com.clubpenguin.world.rooms2012.musicjam.Forts

Open this class up in JPEX and you’ll find this method:

function openCatalogue(key)
{
    this._INTERFACE.showContent(key);
}

Look up inside the init method of the class and you’ll see

this._stage.merch_mc.onRelease = com.clubpenguin.util.Delegate.create(this,this.openCatalogue,com.clubpenguin.world.rooms2012.musicjam.MusicJam.PARTY_CATALOGUE);

Which means that when the merch_mc movieclip is released it will invoke openCatalogue with the parameter com.clubpenguin.world.rooms2012.musicjam.MusicJam.PARTY_CATALOGUE.

If you go and look at com.clubpenguin.world.rooms2012.musicjam.MusicJam.PARTY_CATALOGUE

You will see it is set to w.p0712.musicjam.clothing.catalogue, snippet:

// lines 58 through 63 of com.clubpenguin.world.rooms2012.musicjam.MusicJam
0.PARTY_CATALOGUE = "w.p0712.musicjam.clothing.catalogue";
0.OOPS_NON_MEMBER_BACKSTAGE = "oops_non_member_backstage";
0.SCAVENGER_HUNT_ALERT = "w.p0712.musicjam.scavengerhunt";
0.PARTY_ANNOUNCEMENT = "w.party.announcement";
0.CADENCE_MUSIC_TRACK = "w.p0712.musicjam.cadence.track";
0.DUBSTEP_PUFFLE_MUSIC = "w.0712.musicjam.dubstep.track";

Since this._INTERFACE.showContent(key); is valid for the AS2 and AS3 client, my best guess is you can get this working simply by fixing the incompatible path “short name” from w.p0712.musicjam.clothing.catalogue to party_catalogue.

This can be modified inside JPEX, no need to decompile. In fact, i’ve attached it for you, untested.

forts.swf (159.5 KB)

#3

I tried using this, but to no avail. I did notice that in JPEXS trying to go to the file you edited it throws a message saying it was unable to decompile the ActionScript due to §§ instructions, so maybe that causes the issue, or maybe we’re just looking in the wrong place.

#4

I edited the room using the P-Code pane which is generally much more reliable.

Can you confirm that the triggers in the room work okay? Is the catalogue the only trigger that doesn’t function as you’d expect?

Perhaps setup some kind of override on INTERFACE.showContent() to check it’s not something other than the room that is at fault.

#5

Yes, the other triggers all work fine. I did notice that I get a request for an undefined.swf in the network tab when I enter the room, which could indicate some kind of Disney security in the SWF that could be causing it to not work.

EDIT: Look like I fixed it. My cache must have not cleared properly. I cleared my cache a second time and it works now. Thanks Ben!

closed #7