function EnemyMcGeeBehavior::onCollision(%srcObject, %dstObject, %srcRef, %dstRef, %time, %normal, %contacts, %points) { if(%dstObject.class $= "ChipClass") { echo("eMcG onColl::ChipClass"); if($playersCollided != true) { if($ChipSwiping == true) { echo("eMcG $ChipSwiping"); %srcObject.ChipSwipeAccount(); %dstObject.setCollisionActive(false, false); //%srcObject.setCollisionActive(false, false); } if($EnemySwiping == true) { echo("eMcG $EnemySwiping"); %srcObject.EnemySwipeAccount(); %dstObject.setCollisionActive(false, false); //%srcObject.setCollisionActive(false, false); } } else if($playersCollided == true) { echo("... playersCollided == false"); return; } } } function EnemyMcGeeBehavior::ChipSwipeAccount(%this) { if(EnemySwiping == true) return; echo("eMcG ChipSwipeAccount function"); echo("$ChipSwiping should = 1 " @ $ChipSwiping); echo("eMcG % time " @ Sim::getCurrentTime()); %eReaction = getRandom(1, 2); echo("eMcG ::%eReaction dictates enemy reaction if 1 def, 2 smacked"); echo("eMcG %eReaction " @ %eReaction); if(%eReaction == 1) { echo("eMcG %eReaction == 1 so enemy defend."); //this means enemy succesfully defends %this.schedule(500, eRecover); %this.schedule(1000, reREreRE); $EnemyChangeState = true; $EnemyDefending = true; $EnemySmacked = false; ///will also have to change eChip mount pos. /*%this.enemyChip.mount($Enemy, -3, -3, true);*/ } else if(%eReaction == 2) { echo("eMcG %eReaction == 2 so enemy smacked."); //this means enemy is smacked %this.schedule(500, eRecover); %this.schedule(1000, reREreRE); $EnemyChangeState = true; $EnemyDefending = false; $EnemySmacked = true; //this means enemy loseshis chip %this.enemyChip.dismount(); %this.enemyChip.setConstantForceY($Gravity); ///this var simply tells e to getChip uPon scheduled eRecover %this.lostChip = true; } } function EnemyMcGeeBehavior::reREreRE(%this) { echo("G G G Gggggg GGG gggg G G g g "); echo("G G G Gggggg GGG gggg G G g g "); echo("G G G Gggggg GGG gggg G G g g "); echo("G G G Gggggg GGG gggg G G g g "); echo("G G G Gggggg GGG gggg G G g g "); echo("G G G Gggggg GGG gggg G G g g "); echo("G G G Gggggg GGG gggg G G g g "); echo("G G G Gggggg GGG gggg G G g g "); } function EnemyMcGeeBehavior::eRecover(%this) { $Chip.setCollisionActive(true, true); echo("eMcG ::eRecover"); echo("eMcG ::eRecover"); echo("eMcG ::eRecover"); echo("eMcG ::eRecover"); return; if($EnemyMounted == true) { ///figure out time to drop chip. %ePos = $Enemy.position; if(%ePos > 10) { ///so walk right, drop $EnemyChangeState = true; $EnemyWalking = true; $EnemyWalkingRight = true; %this.schedule(1000, dropChip); } else if (%ePos < 10) { ///so walk left, drop. $EnemyChangeState = true; $EnemyWalking = true; $EnemyWalkingLeft = true; %this.schedule(1000, dropChip); } } else if($EnemyMounted == false) { $EnemyChangeState = true; $EnemyWalking = false; $EnemyWalkingLeft = true; $EnemyWalkingRight = true; $EnemyDefending = false; $EnemySmacking = false; } }