/* Spell Gun 1.0, by szmol96 http://www.jazz2online.com/snippets/72/spell-gun/ */ int frogTime = 0; bool playerIsFrog = false; bool frogTimer = false; const int cSpellLifeTime = 55; float distance(float x1, float y1, float x2, float y2) { return sqrt((x2 - x1)*(x2 - x1) + (y2 - y1)*(y2 - y1)); } float sqrt(float x) { float y = 1.0; for (int i = 0; i < 20; i++) y = (y + x/y)/2; return y; } void CreateSpell(int objectID) { int playerID = jjObjects[objectID].creator - 32768; int spellID = jjAddObject(OBJECT::FASTFEET, jjPlayers[playerID].xPos+(jjPlayers[playerID].direction*48), jjPlayers[playerID].yPos, jjPlayers[playerID].playerID, CREATOR::PLAYER); jjObjects[spellID].determineCurAnim(ANIM::WITCH, 3, true); jjObjects[spellID].direction = jjPlayers[playerID].direction; } void DestroySpell(int spellID) { int explosionID = jjAddObject(OBJECT::ELECTROBULLET, jjObjects[spellID].xPos, jjObjects[spellID].yPos, jjObjects[spellID].creator, CREATOR::PLAYER); jjDeleteObject(spellID); jjObjects[explosionID].determineCurAnim(ANIM::AMMO, 1, true); jjObjects[explosionID].state = STATE::EXPLODE; } void onMain() { p.ammo[9] = 3; if (frogTime > 0) frogTime--; for(int i = 1; i < jjObjectCount; i++) { if (jjObjects[i].isActive && jjObjects[i].eventID == OBJECT::FASTFEET) { if (distance(p.xPos, p.yPos, jjObjects[i].xPos, jjObjects[i].yPos) < 16) { p.morphTo(CHAR::FROG, true); } jjObjects[i].ySpeed = 0; jjObjects[i].xPos = jjObjects[i].xPos+(jjObjects[i].direction*10); jjObjects[i].objType = 3; } } for (int i = 0; i < jjObjectCount; i++) if (jjObjects[i].isActive && jjObjects[i].creatorType == CREATOR::PLAYER) { //Create spell if (jjObjects[i].eventID == OBJECT::ELECTROBULLET && jjObjects[i].state != STATE::EXPLODE) { jjDeleteObject(i); CreateSpell(i); continue; } //Destroy spell if (jjObjects[i].eventID == OBJECT::FASTFEET) { jjObjects[i].age++; if (jjObjects[i].age > cSpellLifeTime) DestroySpell(i); continue; } } if (p.charCurr == CHAR::FROG && !playerIsFrog) { frogTime = 10*70; playerIsFrog = true; } if (p.charCurr != CHAR::FROG && playerIsFrog) { playerIsFrog = false; } if (frogTime == 0 && !frogTimer) { p.revertMorph(true); frogTimer = true; } if (frogTime != 0 && frogTimer) { frogTimer = false; } }