Spoilers for upcoming Bash content, oops.
I've set up several decorative "skull on a pole" events with extra parameters to rotate and shade the sprite.
However it appears that placing the custom event without snapping it to the grid causes the parameters to be lost:
I'm assuming this is a bug but it's possible I'm missing something in my code (robert downey jr: cooba really struggles with parameters and bit lengths)
///@Event 182=Big Skull Left |+|Scenery |Skull |Left |Angle:-8 |Darkness:2
///@Event 143=Big Skull Right |+|Scenery |Skull |Right |Angle:-8 |Darkness:2
///@Event 177=Small Skull Left |+|Scenery |skull |left |Angle:-8 |Darkness:2
///@Event 170=Small Skull Right |+|Scenery |skull |right |Angle:-8 |Darkness:2
class SpikeSkull : jjBEHAVIORINTERFACE {
void onBehave(jjOBJ@ obj) {
obj.behave(BEHAVIOR::STEADYLIGHT, false);
int angleParam = jjParameterGet(int(obj.xPos/32), int(obj.yPos/32), 0, 8);
int darknessParam = jjParameterGet(int(obj.xPos/32), int(obj.yPos/32), 8, 2);
//close enough
int angle = 1023 - (angleParam*4);
int darkness = 128 - (darknessParam*24);
jjDrawRotatedSpriteFromCurFrame(
obj.xPos,
obj.yPos,
obj.curFrame,
angle,
1,
1,
SPRITE::BRIGHTNESS,
darkness,
4
);
jjDrawString(obj.xPos, obj.yPos + 16, "" + angleParam + " => " + angle);
jjDrawString(obj.xPos, obj.yPos + 28, "" + darknessParam + " => " + darkness);
obj.lightType = LIGHT::NONE;
obj.light = 0;
}
}
void onLevelLoad() {
jjPIXELMAP BigSkullLeft(0, 0, 64, 256);
jjPIXELMAP BigSkullRight(64, 0, 64, 256);
jjPIXELMAP SmallSkullLeft(128, 0, 32, 128);
jjPIXELMAP SmallSkullRight(128, 128, 32, 128);
array<jjPIXELMAP@> Skulls = {
BigSkullLeft,
BigSkullRight,
SmallSkullLeft,
SmallSkullRight
};
for (uint i = 0; i < 4; i++) {
jjANIMFRAME@ frame = jjAnimFrames[jjAnimations[jjAnimSets[ANIM::PICKUPS].firstAnim + 15 + i].firstFrame];
Skulls[i].trim();
Skulls[i].save(frame);
frame.hotSpotX = -frame.width/2;
frame.hotSpotY = -frame.height + 14;
}
jjObjectPresets[OBJECT::CHEESE].behavior =
jjObjectPresets[OBJECT::CHERRY].behavior =
jjObjectPresets[OBJECT::CHICKENLEG].behavior =
jjObjectPresets[OBJECT::CHIPS].behavior = SpikeSkull();
jjObjectPresets[OBJECT::CHEESE].playerHandling =
jjObjectPresets[OBJECT::CHERRY].playerHandling =
jjObjectPresets[OBJECT::CHICKENLEG].playerHandling =
jjObjectPresets[OBJECT::CHIPS].playerHandling = HANDLING::PARTICLE;
jjObjectPresets[OBJECT::CHEESE].bulletHandling =
jjObjectPresets[OBJECT::CHERRY].bulletHandling =
jjObjectPresets[OBJECT::CHICKENLEG].bulletHandling =
jjObjectPresets[OBJECT::CHIPS].bulletHandling = HANDLING::IGNOREBULLET;
}
Spoilers for upcoming Bash content, oops.
I've set up several decorative "skull on a pole" events with extra parameters to rotate and shade the sprite.
However it appears that placing the custom event without snapping it to the grid causes the parameters to be lost:
From left to right:
I'm assuming this is a bug but it's possible I'm missing something in my code (robert downey jr: cooba really struggles with parameters and bit lengths)