function scrapbots_list_combinations() { global $session; if ($session['user']['alive'] == 0) { return; } $playerscrap = scrapbots_get_player_scrap(); $scrapnames = scrapbots_scrapnames(); $bot = httpget('bot'); //Basic Processing output("`2`bThings you can do with your bits`b`n"); $canbuild = 0; if ($playerscrap['data']['normalitems'][0] >= 1) { output("You can turn a Rusted Shaft into an Axle with a judicious application of your Metalworking skill.`n"); addnav("Building Spares"); addnav("Turn Rusted Shaft into Axle", "runmodule.php?module=scrapbots&op=combinescrap&bot=" . $bot . "&&make=axle"); $canbuild = 1; } if ($playerscrap['data']['normalitems'][1] >= 1) { output("You can get the rust off a Steel Plate using your Metalworking skill.`n"); addnav("Building Spares"); addnav("Clean up a Rusted Steel Plate", "runmodule.php?module=scrapbots&op=combinescrap&bot=" . $bot . "&&make=steelplate"); $canbuild = 1; } if ($playerscrap['data']['normalitems'][2] >= 1) { output("You can get the rust off a Large Girder using your Metalworking skill.`n"); addnav("Building Spares"); addnav("Clean up a Rusted Large Girder", "runmodule.php?module=scrapbots&op=combinescrap&bot=" . $bot . "&&make=largegirderfromrusted"); $canbuild = 1; } if ($playerscrap['data']['normalitems'][3] >= 1) { output("You can repair a Broken Motherboard using your Soldering skill.`n"); addnav("Building Spares"); addnav("Repair a Broken Motherboard", "runmodule.php?module=scrapbots&op=combinescrap&bot=" . $bot . "&&make=motherboard"); $canbuild = 1; } if ($playerscrap['data']['normalitems'][4] >= 1) { output("You can reflash a Corrupted ROM Chip ready for rewriting using your Programming skill.`n"); addnav("Building Spares"); addnav("Reflash a Corrupted ROM Chip", "runmodule.php?module=scrapbots&op=combinescrap&bot=" . $bot . "&&make=romchip"); $canbuild = 1; } if ($playerscrap['data']['normalitems'][5] >= 1) { output("You can restore a Rusted Servo to working order using your Metalworking skill.`n"); addnav("Building Spares"); addnav("Clean up a Rusted Servo", "runmodule.php?module=scrapbots&op=combinescrap&bot=" . $bot . "&&make=servofromrusted"); $canbuild = 1; } if ($playerscrap['data']['normalitems'][6] >= 1) { output("You can quickly turn a Bundle of Wires into a decent Wiring Harness using your Soldering skill.`n"); addnav("Building Spares"); addnav("Make a Wiring Harness", "runmodule.php?module=scrapbots&op=combinescrap&bot=" . $bot . "&&make=wiringharness"); $canbuild = 1; } if ($playerscrap['data']['normalitems'][7] >= 1 && $session['user']['gold'] >= 40) { output("You can soon recharge that Dead Battery at the Charging Station, for a fee of 40 Requisition.`n"); addnav("Building Spares"); addnav("Recharge a Dead Battery", "runmodule.php?module=scrapbots&op=combinescrap&bot=" . $bot . "&&make=battery"); $canbuild = 1; } if ($playerscrap['data']['normalitems'][8] >= 1 && $session['user']['gold'] >= 40) { output("You can have a Punctured Wheel repaired by professional Robots for 40 Requisition.`n"); addnav("Building Spares"); addnav("Have a Punctured Wheel repaired", "runmodule.php?module=scrapbots&op=combinescrap&bot=" . $bot . "&&make=wheelfrompunctured"); $canbuild = 1; } if ($playerscrap['data']['normalitems'][9] >= 1) { output("You can soon polish up a Rusted Wheel using your Metalworking skill.`n"); addnav("Building Spares"); addnav("Clean up a Rusted Wheel", "runmodule.php?module=scrapbots&op=combinescrap&bot=" . $bot . "&&make=wheelfromrusted"); $canbuild = 1; } if ($playerscrap['data']['normalitems'][10] >= 1) { output("You can clean the rust from a Rusted Small Girder using your Metalworking skill.`n"); addnav("Building Spares"); addnav("Clean up a Rusted Small Girder", "runmodule.php?module=scrapbots&op=combinescrap&bot=" . $bot . "&&make=smallgirderfromrusted"); $canbuild = 1; } if ($playerscrap['data']['normalitems'][11] >= 1) { output("You can soon repair a broken CMOS sensor using your Soldering skill.`n"); addnav("Building Spares"); addnav("Repair a Broken CMOS Sensor", "runmodule.php?module=scrapbots&op=combinescrap&bot=" . $bot . "&&make=cmos"); $canbuild = 1; } if ($playerscrap['data']['normalitems'][12] >= 1) { output("You can turn the bottom of a Glass Milk Bottle into a servicable Lens using your Metalworking skill.`n"); addnav("Building Spares"); addnav("Turn a Glass Milk Bottle into a Lens", "runmodule.php?module=scrapbots&op=combinescrap&bot=" . $bot . "&&make=lens"); $canbuild = 1; } if ($playerscrap['data']['normalitems'][13] >= 1) { output("You can repair a Broken Servo using your Soldering skill.`n"); addnav("Building Spares"); addnav("Repair a Broken Servo", "runmodule.php?module=scrapbots&op=combinescrap&bot=" . $bot . "&&make=servofrombroken"); $canbuild = 1; } if ($playerscrap['data']['normalitems'][14] >= 1) { output("You can repair a Broken Drive Motor using your Soldering skill.`n"); addnav("Building Spares"); addnav("Repair a broken Drive Motor", "runmodule.php?module=scrapbots&op=combinescrap&bot=" . $bot . "&&make=drivefrombroken"); $canbuild = 1; } if ($playerscrap['data']['normalitems'][15] >= 1) { output("You can clean up a Rusted Drive Motor using your Metalworking skill.`n"); addnav("Building Spares"); addnav("Clean up Rusted Drive Motor", "runmodule.php?module=scrapbots&op=combinescrap&bot=" . $bot . "&&make=drivefromrusted"); $canbuild = 1; } if ($canbuild == 0) { output("You don't have any Scrap that you can upgrade into a spare part.`n"); } //Splitting and Combining output("`n"); $canbuild = 0; if ($playerscrap['data']['rareitems'][2] >= 1) { output("You can turn a Large Girder into two Small Girders using your Metalworking skill.`n"); addnav("Cutting and Welding"); addnav("Saw a Large Girder in half", "runmodule.php?module=scrapbots&op=combinescrap&bot=" . $bot . "&&make=twosmallgirders"); $canbuild = 1; } if ($playerscrap['data']['rareitems'][8] >= 2) { addnav("Cutting and Welding"); output("You can make a Large Girder from two Small Girders using your Metalworking skill.`n"); addnav("Weld two Small Girders together", "runmodule.php?module=scrapbots&op=combinescrap&bot=" . $bot . "&&make=largegirderfromtwosmall"); $canbuild = 1; } if ($playerscrap['data']['rareitems'][8] >= 3) { addnav("Cutting and Welding"); output("You can make five Steel Plates from three Small Girders using your Metalworking skill.`n"); addnav("Make five Steel Plates from three Small Girders", "runmodule.php?module=scrapbots&op=combinescrap&bot=" . $bot . "&&make=platesfromgirders"); $canbuild = 1; } if ($playerscrap['data']['rareitems'][1] >= 2) { output("You can make some pretty good Armour out of two Steel Plates using your Metalworking skill.`n"); addnav("Building Assemblies"); addnav("Make Armour from two Steel Plates", "runmodule.php?module=scrapbots&op=combinescrap&bot=" . $bot . "&&make=armour"); $canbuild = 1; } if ($playerscrap['data']['rareitems'][8] >= 2 && $playerscrap['data']['rareitems'][2] >= 1) { addnav("Building Assemblies"); output("You can build a Chassis from two Small Girders and one Large Girder using your Metalworking skill.`n"); addnav("Build a Chassis", "runmodule.php?module=scrapbots&op=combinescrap&bot=" . $bot . "&&make=chassis"); $canbuild = 1; } if ($playerscrap['data']['rareitems'][1] >= 1 && $playerscrap['data']['rareitems'][8] >= 1 && $playerscrap['data']['rareitems'][11] >= 1) { addnav("Building Assemblies"); output("You can build a Servo Limb out of a Servo, a Small Girder and a Steel Plate using your Metalworking and Soldering skills.`n"); addnav("Build a Servo Limb", "runmodule.php?module=scrapbots&op=combinescrap&bot=" . $bot . "&&make=servolimb"); $canbuild = 1; } if ($playerscrap['data']['rareitems'][9] >= 1 && $playerscrap['data']['rareitems'][10] >= 1) { addnav("Building Assemblies"); output("You can build a Camera Eye from a Lens and a CMOS Sensor using your Metalworking and Soldering skills.`n"); addnav("Build a Camera Eye", "runmodule.php?module=scrapbots&op=combinescrap&bot=" . $bot . "&&make=cameraeye"); $canbuild = 1; } if ($canbuild == 0) { output("You don't have any spare parts that you can assemble.`n"); } output("`n`0"); return; }
function scrapbots_battle($defenderid) { global $session; $attackerid = $session['user']['acctid']; /* ======================================================= Retrieve attacking and defending armies from the database along with global retreat percentages, and put them into $attacker and $defender arrays ======================================================= */ //get attackers $sql = "SELECT id,owner,name,activated,hitpoints,brains,brawn,briskness,junglefighter,retreathp FROM " . db_prefix("scrapbots") . " WHERE owner = {$attackerid} && activated = 1"; $result = db_query($sql); $attacker = array(); for ($i = 0; $i < db_num_rows($result); $i++) { $attacker[$i] = db_fetch_assoc($result); } $sql = "SELECT id,owner,name,activated,hitpoints,brains,brawn,briskness,junglefighter,retreathp FROM " . db_prefix("scrapbots") . " WHERE owner = {$defenderid} && activated = 1"; $result = db_query($sql); $defender = array(); for ($i = 0; $i < db_num_rows($result); $i++) { $defender[$i] = db_fetch_assoc($result); } $atkretreatpct = get_module_pref("retreatpct", "scrapbots", $attackerid); $defretreatpct = get_module_pref("retreatpct", "scrapbots", $defenderid); //We're going to put all of the destroyed bots into a special array, so that we can retrieve the scrap from them later on. $destroyed = array(); //We'll put the bots that fled into arrays too, so that they can be returned after the fight. $atkfled = array(); $deffled = array(); $war = 1; $burn = 0; /* ======================================================= WAR IS ON! ======================================================= */ while ($war == 1) { $attacker = array_values($attacker); $defender = array_values($defender); $burn++; if ($burn > 10000) { //debug("Burned in War loop"); break; } //get a fighter from the Attacking army $foundattacker = 0; while ($foundattacker == 0) { $burn++; if ($burn > 10000) { //debug("Burned while finding attacker"); break; } $atkbot = e_rand(0, count($attacker) - 1); if (e_rand(1, 100) < $attacker[$atkbot]['briskness'] * 10) { // debug ("Attacker Chosen:"); $foundattacker = 1; // debug ($attacker[$atkbot]); } else { // debug("Attacker failed Briskness check. Choosing again."); } } //get a fighter from the Defending army $founddefender = 0; while ($founddefender == 0) { $burn++; if ($burn > 10000) { //debug("Burned while finding Defender"); break; } $defbot = e_rand(0, count($defender) - 1); if (e_rand(1, 100) < $defender[$defbot]['briskness'] * 10) { // debug ("Defender Chosen:"); $founddefender = 1; // debug ($defender[$defbot]); } else { // debug("Defender failed Briskness check. Choosing again."); } } /* ======================================================= Choose which bot strikes first ======================================================= */ // if ($attacker[$atkbot]['briskness'] > $defender[$defbot]['briskness']){ // $turn = "atk"; // } else if ($attacker[$atkbot]['briskness'] < $defender[$defbot]['briskness']){ // $turn = "def"; // } else { // $coin = e_rand(0,1); // if ($coin == 1){ // $turn = "atk"; // } else { // $turn = "def"; // } // } $chance = $attacker[$atkbot]['briskness'] * e_rand(0, 100) - $defender[$defbot]['briskness'] * e_rand(0, 100); if ($chance > 0) { $turn = "atk"; } else { $turn = "def"; } // debug($turn); /* ======================================================= Output flavour text ======================================================= */ output("`b`4%s`0 lunges at `2%s`0!`b`n", $attacker[$atkbot]['name'], $defender[$defbot]['name']); $atkhp = $attacker[$atkbot]['hitpoints']; $defhp = $defender[$defbot]['hitpoints']; output("`\$`b%s`b`0 / `@`b%s`b`0`n", $atkhp, $defhp); if ($turn == "atk") { output("`\$%s gets the first attack!`n", $attacker[$atkbot]['name']); } else { output("`@%s gets the first attack!`n", $defender[$defbot]['name']); } /* ======================================================= Bots knock the shit out of each other ======================================================= */ $battle = 1; $fight = 1; $run = 0; while ($battle == 1) { $roundsofrunning = 0; $burn++; if ($burn > 10000) { //debug("Burned in Battle loop"); break; } while ($fight == 1) { $burn++; if ($burn > 10000) { //debug("Burned while fighting"); break; } if ($defender[$defbot]['hitpoints'] < $defender[$defbot]['brawn'] / 10 * $defender[$defbot]['retreathp'] || $attacker[$atkbot]['hitpoints'] < $attacker[$atkbot]['brawn'] / 10 * $attacker[$atkbot]['retreathp']) { $fight = 0; $run = 1; } if ($turn == "atk") { $hitchance = 50 + ($attacker[$atkbot]['briskness'] - $defender[$defbot]['briskness']) * 3; if ($attacker[$atkbot]['hitpoints'] < $attacker[$atkbot]['brawn'] / 10 * $attacker[$atkbot]['retreathp']) { $hitchance = 25 + ($attacker[$atkbot]['briskness'] - $attacker[$atkbot]['briskness']) * 4; output("`2%s is a bit too busy running for its life to attack properly!`n", $attacker[$atkbot]['name']); } if ($hitchance > e_rand(1, 100)) { //Bot lands a successful hit $mindamage = 2 + ceil($attacker[$atkbot]['brawn'] / 2); $maxdamage = 5 + $attacker[$atkbot]['brawn'] * 2; $damage = e_rand($mindamage, $maxdamage); output("`4%s lands a successful hit! %s takes `\$%s`4 damage!`n", $attacker[$atkbot]['name'], $defender[$defbot]['name'], $damage); $defender[$defbot]['hitpoints'] -= $damage; $atkhp = $attacker[$atkbot]['hitpoints']; $defhp = $defender[$defbot]['hitpoints']; if ($atkhp < 0) { $atkhp = 0; } if ($defhp < 0) { $defhp = 0; } output("`\$`b%s`b`0 / `@`b%s`b`0`n", $atkhp, $defhp); //reprogramming if ($attacker[$atkbot]['brains'] > 5 && $defender[$defbot]['hitpoints'] > 0) { $reprogramchance = ($attacker[$atkbot]['brains'] - $defender[$defbot]['brains']) * 5; if ($reprogramchance > e_rand(1, 100)) { output("`b`4%s pulls off a successful reprogramming! %s switches sides!`b`n", $attacker[$atkbot]['name'], $defender[$defbot]['name']); $atkhp = $attacker[$atkbot]['hitpoints']; $defhp = $defender[$defbot]['hitpoints']; if ($atkhp < 0) { $atkhp = 0; } if ($defhp < 0) { $defhp = 0; } output("`\$`b%s`b`0 / `@`b%s`b`0`n`n", $atkhp, $defhp); $defender[$defbot]['owner'] = $attackerid; $attacker[] = $defender[$defbot]; $reprogrammed[] = $defender[$defbot]; unset($defender[$defbot]); $battle = 0; $fight = 0; $run = 0; break; } } } else { output("`4%s swings at %s, who dodges out of the way!`n", $attacker[$atkbot]['name'], $defender[$defbot]['name']); } if ($defender[$defbot]['hitpoints'] <= 0) { output("`@`b%s flies apart in a glorious display of spinning, burning scrap metal!`b`n`n", $defender[$defbot]['name']); $destroyed[] = $defender[$defbot]; unset($defender[$defbot]); $battle = 0; $fight = 0; $run = 0; break; } $turn = "def"; } else { $hitchance = 50 + ($defender[$defbot]['briskness'] - $attacker[$atkbot]['briskness']) * 3; if ($defender[$defbot]['hitpoints'] < $defender[$defbot]['brawn'] / 10 * $defender[$defbot]['retreathp']) { $hitchance = 25 + ($defender[$defbot]['briskness'] - $attacker[$atkbot]['briskness']) * 4; output("`2%s is a bit too busy running for its life to attack properly!`n", $defender[$defbot]['name']); } if ($hitchance > e_rand(1, 100)) { //Bot lands a successful hit $mindamage = 2 + ceil($defender[$defbot]['brawn'] / 2); $maxdamage = 5 + $defender[$defbot]['brawn'] * 2; $damage = e_rand($mindamage, $maxdamage); output("`2%s lands a successful hit! %s takes `@%s`2 damage!`n", $defender[$defbot]['name'], $attacker[$atkbot]['name'], $damage); $attacker[$atkbot]['hitpoints'] -= $damage; $atkhp = $attacker[$atkbot]['hitpoints']; $defhp = $defender[$defbot]['hitpoints']; if ($atkhp < 0) { $atkhp = 0; } if ($defhp < 0) { $defhp = 0; } output("`\$`b%s`b`0 / `@`b%s`b`0`n", $atkhp, $defhp); //reprogramming if ($defender[$defbot]['brains'] > 5 && $attacker[$atkbot]['hitpoints'] > 0) { $reprogramchance = ($defender[$defbot]['brains'] - $attacker[$atkbot]['brains']) * 5; if ($reprogramchance > e_rand(1, 100)) { output("`b`4%s pulls off a successful reprogramming! %s switches sides!`b`n", $defender[$defbot]['name'], $attacker[$atkbot]['name']); $atkhp = $attacker[$atkbot]['hitpoints']; $defhp = $defender[$defbot]['hitpoints']; if ($atkhp < 0) { $atkhp = 0; } if ($defhp < 0) { $defhp = 0; } output("`\$`b%s`b`0 / `@`b%s`b`0`n`n", $atkhp, $defhp); $attacker[$atkbot]['owner'] = $defenderid; $defender[] = $attacker[$atkbot]; $reprogrammed[] = $attacker[$atkbot]; unset($attacker[$atkbot]); $battle = 0; $fight = 0; $run = 0; break; } } } else { output("`2%s swings at %s, who dodges out of the way!`n", $defender[$defbot]['name'], $attacker[$atkbot]['name']); } if ($attacker[$atkbot]['hitpoints'] <= 0) { output("`\$`b%s flies apart in a glorious display of spinning, burning scrap metal!`b`n`n", $attacker[$atkbot]['name']); $destroyed[] = $attacker[$atkbot]; unset($attacker[$atkbot]); $battle = 0; $fight = 0; $run = 0; break; } else { $turn = "atk"; } } if ($run == 1) { output("`n"); } } /* ======================================================= Benny Hill style chase scene ======================================================= */ while ($run == 1) { // $burn++; // debug($burn); // debug($attacker[$atkbot]); // debug($defender[$defbot]); // if ($burn > 1000){ // debug("Burned while running"); // $war = 0; // $battle = 0; // break; // } if ($defender[$defbot]['hitpoints'] < $defender[$defbot]['brawn'] / 10 * $defender[$defbot]['retreathp'] && $attacker[$atkbot]['hitpoints'] < $attacker[$atkbot]['brawn'] / 10 * $attacker[$atkbot]['retreathp']) { output("`0`bBoth ScrapBots, having activated their automatic retreat subroutine - and being of limited intelligence - tear off in opposite directions from each other, flailing their servos madly in the air!`b`n`n"); $atkfled[] = $attacker[$atkbot]; unset($attacker[$atkbot]); $deffled[] = $defender[$defbot]; unset($defender[$defbot]); $battle = 0; $run = 0; } if ($defender[$defbot]['hitpoints'] >= $defender[$defbot]['brawn'] / 10 * $defender[$defbot]['retreathp'] && $attacker[$atkbot]['hitpoints'] < $attacker[$atkbot]['brawn'] / 10 * $attacker[$atkbot]['retreathp']) { //attacker is running, defender is chasing $distanceatk = 5 + e_rand($attacker[$atkbot]['briskness'], $attacker[$atkbot]['briskness'] * 10); $attacker[$atkbot]['distancetravelled'] += $distanceatk; $distancedef = 5 + e_rand($defender[$defbot]['briskness'], $defender[$defbot]['briskness'] * 10); $defender[$defbot]['distancetravelled'] += $distancedef; output("`4%s runs like hell, covering a distance of `\$%s`4 feet!`n", $attacker[$atkbot]['name'], $distanceatk); $distancebetween = $attacker[$atkbot]['distancetravelled'] - $defender[$defbot]['distancetravelled']; if ($distancebetween <= 0) { $run = 0; $fight = 1; output("`@%s catches up rather quickly, and sets about maiming the poor fleeing ScrapBot!`n", $defender[$defbot]['name']); } else { if ($roundsofrunning > 5) { output("`@%s throws down its hat in disgust, and declares the chase a waste of time, heading back to the main battle. `b%s gets away!`b`n`n", $defender[$defbot]['name'], $attacker[$atkbot]['name']); $atkfled[] = $attacker[$atkbot]; unset($attacker[$atkbot]); $battle = 0; $run = 0; } else { output("`2%s chases furiously, closing the gap between them to `@%s`2 feet!`n", $defender[$defbot]['name'], $distancebetween); } } } if ($defender[$defbot]['hitpoints'] < $defender[$defbot]['brawn'] / 10 * $defender[$defbot]['retreathp'] && $attacker[$atkbot]['hitpoints'] >= $attacker[$atkbot]['brawn'] / 10 * $attacker[$atkbot]['retreathp']) { //defender is running, attacker is chasing $distancedef = 5 + e_rand($defender[$defbot]['briskness'], $defender[$defbot]['briskness'] * 10); $defender[$defbot]['distancetravelled'] += $distancedef; $distanceatk = 5 + e_rand($attacker[$atkbot]['briskness'], $attacker[$atkbot]['briskness'] * 10); $attacker[$atkbot]['distancetravelled'] += $distanceatk; output("`2%s runs like hell, covering a distance of `@%s`2 feet!`n", $defender[$defbot]['name'], $distancedef); $distancebetween = $defender[$defbot]['distancetravelled'] - $attacker[$atkbot]['distancetravelled']; if ($distancebetween <= 0) { $run = 0; $fight = 1; output("`\$%s catches up rather quickly, and sets about maiming the poor fleeing ScrapBot!`n", $attacker[$atkbot]['name']); } else { if ($roundsofrunning > 5) { output("`\$%s throws down its hat in disgust, and declares the chase a waste of time, heading back to the main battle. `b%s gets away!`b`n`n", $attacker[$atkbot]['name'], $defender[$defbot]['name']); $deffled[] = $defender[$defbot]; unset($defender[$defbot]); $battle = 0; $run = 0; } else { output("`4%s chases furiously, closing the gap between them to `\$%s`\$ feet!`n", $attacker[$atkbot]['name'], $distancebetween); } } } $roundsofrunning++; } } /* ======================================================= We see if someone's won yet ======================================================= */ $atkcount = count($attacker); $defcount = count($defender); if ($atkcount == 0) { $winner = $defenderid; $war = 0; output("`c`b`\$You have lost this battle!`0`b`c`n"); } else { if ($defcount == 0) { $winner = $attackerid; $war = 0; output("`c`b`@You have won this battle!`0`b`c`n"); } } /* ======================================================= Output a message saying how many ScrapBots are left on each side ======================================================= */ $atkcount = count($attacker); $defcount = count($defender); output("`c`\$`b%s`b`0 / `@`b%s`b`0`c`n`n", $atkcount, $defcount); } //debug("Final Burn rating:"); //debug($burn); $winnerscrap = array(); foreach ($destroyed as $bot => $vals) { //basic components //axles $winnerscrap[0] += 2; //armour, now steel plate $winnerscrap[1] += 2; //chassis, now large and small girders $winnerscrap[2] += 1; $winnerscrap[8] += 2; //motherboard $winnerscrap[3] += 1; //ROM Chip $winnerscrap[4] += 1; //Wiring $winnerscrap[5] += 1; //Battery $winnerscrap[6] += 1; //wheels $winnerscrap[7] += 4; //camera eye, now cmos and lens $winnerscrap[9] += 1; $winnerscrap[10] += 1; //servo limb, now servo, small girder and steel plate $winnerscrap[11] += 1; $winnerscrap[8] += 1; $winnerscrap[1] += 1; //drive motor $winnerscrap[12] += 1; //now the level-specific stuff if ($vals['brains'] == 2) { $winnerscrap[4] += 1; } if ($vals['brains'] == 3) { $winnerscrap[4] += 2; } if ($vals['brains'] == 4) { $winnerscrap[4] += 3; } if ($vals['brains'] == 5) { $winnerscrap[4] += 4; } if ($vals['brains'] == 6) { $winnerscrap[4] += 5; } if ($vals['brains'] == 7) { $winnerscrap[4] += 7; } if ($vals['brains'] == 8) { $winnerscrap[4] += 9; } if ($vals['brains'] == 9) { $winnerscrap[4] += 11; } if ($vals['brains'] == 10) { $winnerscrap[4] += 14; } if ($vals['brawn'] == 2) { //armour $winnerscrap[1] += 2; } if ($vals['brawn'] == 3) { //armour $winnerscrap[1] += 4; //servo $winnerscrap[8] += 1; $winnerscrap[11] += 1; } if ($vals['brawn'] == 4) { //armour $winnerscrap[1] += 6; //servo $winnerscrap[8] += 2; $winnerscrap[11] += 2; } if ($vals['brawn'] == 5) { //armour $winnerscrap[1] += 10; //servo $winnerscrap[8] += 2; $winnerscrap[11] += 2; //battery $winnerscrap[6] += 1; } if ($vals['brawn'] == 6) { //armour $winnerscrap[1] += 16; //servo $winnerscrap[8] += 2; $winnerscrap[11] += 2; //battery $winnerscrap[6] += 1; } if ($vals['brawn'] == 7) { //armour $winnerscrap[1] += 18; //servo $winnerscrap[8] += 3; $winnerscrap[11] += 3; //battery $winnerscrap[6] += 2; } if ($vals['brawn'] == 8) { //armour $winnerscrap[1] += 22; //servo $winnerscrap[8] += 4; $winnerscrap[11] += 4; //battery $winnerscrap[6] += 3; } if ($vals['brawn'] == 9) { //armour $winnerscrap[1] += 26; //servo $winnerscrap[8] += 3; $winnerscrap[11] += 3; //battery $winnerscrap[6] += 2; } if ($vals['brawn'] == 10) { //armour $winnerscrap[1] += 34; //servo $winnerscrap[8] += 4; $winnerscrap[11] += 4; //battery $winnerscrap[6] += 3; } if ($vals['briskness'] == 2) { //battery $winnerscrap[6] += 1; } if ($vals['briskness'] == 3) { //battery $winnerscrap[6] += 2; } if ($vals['briskness'] == 4) { //battery $winnerscrap[6] += 3; //drive motor $winnerscrap[12] += 1; } if ($vals['briskness'] == 5) { //battery $winnerscrap[6] += 4; //drive motor $winnerscrap[12] += 2; } if ($vals['briskness'] == 6) { //battery $winnerscrap[6] += 5; //drive motor $winnerscrap[12] += 3; } if ($vals['briskness'] == 7) { //battery $winnerscrap[6] += 7; //drive motor $winnerscrap[12] += 4; } if ($vals['briskness'] == 8) { //battery $winnerscrap[6] += 9; //drive motor $winnerscrap[12] += 5; } if ($vals['briskness'] == 9) { //battery $winnerscrap[6] += 11; //drive motor $winnerscrap[12] += 7; } if ($vals['briskness'] == 10) { //battery $winnerscrap[6] += 13; //drive motor $winnerscrap[12] += 9; } } //now destroy about a quarter of it at random foreach ($winnerscrap as $part => $num) { $num = ceil($num * (e_rand(5, 10) / 10)); $winnerscrap[$part] = $num; } require_once "modules/scrapbots/lib.php"; $playerscrap = scrapbots_get_player_scrap($winner); //Sort out the distribution of spare parts if ($winner == $attackerid) { output("`c`bThe Spoils`b`c`n`n"); output("The following parts are left lying all across the field. Your surviving ScrapBots will bring them back to your workshop for you.`n"); $scrapnames = scrapbots_scrapnames(); foreach ($scrapnames['rareitems'] as $id => $item) { $itemqty = $winnerscrap[$id]; if ($itemqty > 0) { output("%s: %s`n", $item, $itemqty); } } output("`n`n"); foreach ($winnerscrap as $part => $num) { $playerscrap['data']['rareitems'][$part] += $num; } set_module_pref("scrap", serialize($playerscrap), "scrapbots"); } else { foreach ($winnerscrap as $part => $num) { $playerscrap['data']['rareitems'][$part] += $num; } set_module_pref("scrap", serialize($playerscrap), "scrapbots", $winner); } //Now update the database //Delete bots that have been destroyed foreach ($destroyed as $bot => $val) { $id = $val['id']; $sql = "DELETE FROM " . db_prefix("scrapbots") . " WHERE id = {$id}"; db_query($sql); } //Restore bots that have fled the battlefield foreach ($atkfled as $bot => $val) { $attacker[] = $val; } foreach ($deffled as $bot => $val) { $defender[] = $val; } //Update owner and hitpoint details for all bots foreach ($attacker as $bot => $val) { //debug("updating atk db"); //debug($val); $sql = "UPDATE " . db_prefix("scrapbots") . " SET owner = " . $val['owner'] . ", hitpoints = " . $val['hitpoints'] . " WHERE id = " . $val['id']; //debug($sql); db_query($sql); } foreach ($defender as $bot => $val) { //output("Now updating defender db"); $sql = "UPDATE " . db_prefix("scrapbots") . " SET owner = " . $val['owner'] . ", hitpoints = " . $val['hitpoints'] . " WHERE id = " . $val['id']; //debug($sql); db_query($sql); } }