playerlog($playerinfo[player_id], LOG_FURANGEE_ATTACK, "$rowo3[character_name]"); furangeetoship($rowo3[player_id]); if ($furangeeisdead>0) { $res->MoveNext(); continue; } } } elseif ($playerinfo[aggression] == 2) // ****** O = 3 & AGRESSION = 2 ATTACK ALLWAYS ****** { $furcount3a++; playerlog($playerinfo[player_id], LOG_FURANGEE_ATTACK, "$rowo3[character_name]"); if (!$rowo3[planet_id] == 0) { // *** IS ON PLANET *** furangeetoplanet($rowo3[planet_id]); } else { furangeetoship($rowo3[player_id]); } if ($furangeeisdead>0) { $res->MoveNext(); continue; } } } } } // ********************************* // *** ORDERS = 4 SPECIAL TRADER *** // ********************************* elseif ($playerinfo[orders]==4) { // Move the ship every tick
function furangeetoplanet($planet_id) { // *********************************** // *** Furangee Planet Attack Code *** // *********************************** // ********************************* // *** SETUP GENERAL VARIABLES **** // ********************************* global $playerinfo; global $shipinfo; global $planetinfo; global $torp_dmg_rate; global $level_factor; global $rating_combat_factor; global $upgrade_cost; global $upgrade_factor; global $sector_max; global $furangeeisdead; global $db, $dbtables; // *** LOCKING TABLES **** //$db->Execute("LOCK TABLES $dbtables[players] WRITE, $dbtables[ships] WRITE, $dbtables[universe] WRITE, $dbtables[planets] WRITE, $dbtables[news] WRITE, $dbtables[logs] WRITE"); // ******************************** // *** LOOKUP PLANET DETAILS **** // ******************************** //$resultp = $db->Execute ("SELECT * FROM $dbtables[planets] WHERE planet_id='$planet_id'"); echo "The planet ID (ship id) = $planet_id<br>"; $resultp = $db->Execute ("SELECT * FROM $dbtables[planets] WHERE owner='$planet_id'"); if ($resultp->EOF) { echo "Asked to get info on $planet_id and failed<br>"; return; } $planetinfo=$resultp->fields; // ******************************** // *** LOOKUP OWNER DETAILS **** // ******************************** $resulto = $db->Execute ("SELECT * FROM $dbtables[players] WHERE player_id='$planet_id'"); $ownerinfo=$resulto->fields; // ********************************** // *** SETUP PLANETARY VARIABLES **** // ********************************** $base_factor = ($planetinfo[base] == 'Y') ? $basedefense : 0; // *** PLANET BEAMS *** $targetbeams = NUM_BEAMS($ownerinfo[beams] + $base_factor); if ($targetbeams > $planetinfo[energy]) $targetbeams = $planetinfo[energy]; $planetinfo[energy] -= $targetbeams; // *** PLANET SHIELDS *** $targetshields = NUM_SHIELDS($ownerinfo[shields] + $base_factor); if ($targetshields > $planetinfo[energy]) $targetshields = $planetinfo[energy]; $planetinfo[energy] -= $targetshields; // *** PLANET TORPS *** $torp_launchers = round(mypw($level_factor, ($ownerinfo[torp_launchers])+ $base_factor)) * 10; $torps = $planetinfo[torps]; $targettorps = $torp_launchers; if ($torp_launchers > $torps) $targettorps = $torps; $planetinfo[torps] -= $targettorps; $targettorpdmg = $torp_dmg_rate * $targettorps; // *** PLANET FIGHTERS *** $targetfighters = $planetinfo[fighters]; // ********************************* // *** SETUP ATTACKER VARIABLES **** // ********************************* // *** ATTACKER BEAMS *** $attackerbeams = NUM_BEAMS($shipinfo[beams]); if ($attackerbeams > $shipinfo[ship_energy]) $attackerbeams = $shipinfo[ship_energy]; $shipinfo[ship_energy] -= $attackerbeams; // *** ATTACKER SHIELDS *** $attackershields = NUM_SHIELDS($shipinfo[shields]); if ($attackershields > $shipinfo[ship_energy]) $attackershields = $shipinfo[ship_energy]; $shipinfo[ship_energy] -= $attackershields; // *** ATTACKER TORPS *** $attackertorps = round(mypw($level_factor, $shipinfo[torp_launchers])) * 2; if ($attackertorps > $shipinfo[torps]) $attackertorps = $shipinfo[torps]; $shipinfo[torps] -= $attackertorps; $attackertorpdamage = $torp_dmg_rate * $attackertorps; // *** ATTACKER FIGHTERS *** $attackerfighters = $shipinfo[ship_fighters]; // *** ATTACKER ARMOUR *** $attackerarmor = $shipinfo[armour_pts]; // ********************************* // **** BEGIN COMBAT PROCEDURES **** // ********************************* if($attackerbeams > 0 && $targetfighters > 0) { //******** ATTACKER HAS BEAMS - TARGET HAS FIGHTERS - BEAMS VS FIGHTERS ******** if($attackerbeams > $targetfighters) { //****** ATTACKER BEAMS GT TARGET FIGHTERS ****** $lost = $targetfighters; $targetfighters = 0; //**** T LOOSES ALL FIGHTERS **** $attackerbeams = $attackerbeams-$lost; //**** A LOOSES BEAMS EQ TO T FIGHTERS **** } else { //****** ATTACKER BEAMS LE TARGET FIGHTERS ****** $targetfighters = $targetfighters-$attackerbeams; //**** T LOOSES FIGHTERS EQ TO A BEAMS **** $attackerbeams = 0; //**** A LOOSES ALL BEAMS **** } } if($attackerfighters > 0 && $targetbeams > 0) { //******** TARGET HAS BEAMS - ATTACKER HAS FIGHTERS - BEAMS VS FIGHTERS ******** if($targetbeams > round($attackerfighters / 2)) { //****** TARGET BEAMS GT HALF ATTACKER FIGHTERS ****** $lost=$attackerfighters-(round($attackerfighters/2)); $attackerfighters=$attackerfighters-$lost; //**** A LOOSES HALF ALL FIGHTERS **** $targetbeams=$targetbeams-$lost; //**** T LOOSES BEAMS EQ TO HALF A FIGHTERS **** } else { //****** TARGET BEAMS LE HALF ATTACKER FIGHTERS ****** $attackerfighters=$attackerfighters-$targetbeams; //**** A LOOSES FIGHTERS EQ TO T BEAMS **** $targetbeams=0; //**** T LOOSES ALL BEAMS **** } } if($attackerbeams > 0) { //******** ATTACKER HAS BEAMS LEFT - CONTINUE COMBAT - BEAMS VS SHIELDS ******** if($attackerbeams > $targetshields) { //****** ATTACKER BEAMS GT TARGET SHIELDS ****** $attackerbeams=$attackerbeams-$targetshields; //**** A LOOSES BEAMS EQ TO T SHIELDS **** $targetshields=0; //**** T LOOSES ALL SHIELDS **** } else { //****** ATTACKER BEAMS LE TARGET SHIELDS ****** $targetshields=$targetshields-$attackerbeams; //**** T LOOSES SHIELDS EQ TO A BEAMS **** $attackerbeams=0; //**** A LOOSES ALL BEAMS **** } } if($targetbeams > 0) { //******** TARGET HAS BEAMS LEFT - CONTINUE COMBAT - BEAMS VS SHIELDS ******** if($targetbeams > $attackershields) { //****** TARGET BEAMS GT ATTACKER SHIELDS ****** $targetbeams=$targetbeams-$attackershields; //**** T LOOSES BEAMS EQ TO A SHIELDS **** $attackershields=0; //**** A LOOSES ALL SHIELDS **** } else { //****** TARGET BEAMS LE ATTACKER SHIELDS ****** $attackershields=$attackershields-$targetbeams; //**** A LOOSES SHIELDS EQ TO T BEAMS **** $targetbeams=0; //**** T LOOSES ALL BEAMS **** } } if($targetbeams > 0) { //******** TARGET HAS BEAMS LEFT - CONTINUE COMBAT - BEAMS VS ARMOR ******** if($targetbeams > $attackerarmor) { //****** TARGET BEAMS GT ATTACKER ARMOR ****** $targetbeams=$targetbeams-$attackerarmor; //**** T LOOSES BEAMS EQ TO A ARMOR **** $attackerarmor=0; //**** A LOOSES ALL ARMOR (A DESTROYED) **** } else { //****** TARGET BEAMS LE ATTACKER ARMOR ****** $attackerarmor=$attackerarmor-$targetbeams; //**** A LOOSES ARMOR EQ TO T BEAMS **** $targetbeams=0; //**** T LOOSES ALL BEAMS **** } } if($targetfighters > 0 && $attackertorpdamage > 0) { //******** ATTACKER FIRES TORPS - TARGET HAS FIGHTERS - TORPS VS FIGHTERS ******** if($attackertorpdamage > $targetfighters) { //****** ATTACKER FIRED TORPS GT TARGET FIGHTERS ****** $lost=$targetfighters; $targetfighters=0; //**** T LOOSES ALL FIGHTERS **** $attackertorpdamage=$attackertorpdamage-$lost; //**** A LOOSES FIRED TORPS EQ TO T FIGHTERS **** } else { //****** ATTACKER FIRED TORPS LE HALF TARGET FIGHTERS ****** $targetfighters=$targetfighters-$attackertorpdamage; //**** T LOOSES FIGHTERS EQ TO A TORPS FIRED **** $attackertorpdamage=0; //**** A LOOSES ALL TORPS FIRED **** } } if($attackerfighters > 0 && $targettorpdmg > 0) { //******** TARGET FIRES TORPS - ATTACKER HAS FIGHTERS - TORPS VS FIGHTERS ******** if($targettorpdmg > round($attackerfighters / 2)) { //****** TARGET FIRED TORPS GT HALF ATTACKER FIGHTERS ****** $lost=$attackerfighters-(round($attackerfighters/2)); $attackerfighters=$attackerfighters-$lost; //**** A LOOSES HALF ALL FIGHTERS **** $targettorpdmg=$targettorpdmg-$lost; //**** T LOOSES FIRED TORPS EQ TO HALF A FIGHTERS **** } else { //****** TARGET FIRED TORPS LE HALF ATTACKER FIGHTERS ****** $attackerfighters=$attackerfighters-$targettorpdmg; //**** A LOOSES FIGHTERS EQ TO T TORPS FIRED **** $targettorpdmg=0; //**** T LOOSES ALL TORPS FIRED **** } } if($targettorpdmg > 0) { //******** TARGET FIRES TORPS - CONTINUE COMBAT - TORPS VS ARMOR ******** if($targettorpdmg > $attackerarmor) { //****** TARGET FIRED TORPS GT HALF ATTACKER ARMOR ****** $targettorpdmg=$targettorpdmg-$attackerarmor; //**** T LOOSES FIRED TORPS EQ TO A ARMOR **** $attackerarmor=0; //**** A LOOSES ALL ARMOR (A DESTROYED) **** } else { //****** TARGET FIRED TORPS LE HALF ATTACKER ARMOR ****** $attackerarmor=$attackerarmor-$targettorpdmg; //**** A LOOSES ARMOR EQ TO T TORPS FIRED **** $targettorpdmg=0; //**** T LOOSES ALL TORPS FIRED **** } } if($attackerfighters > 0 && $targetfighters > 0) { //******** ATTACKER HAS FIGHTERS - TARGET HAS FIGHTERS - FIGHTERS VS FIGHTERS ******** if($attackerfighters > $targetfighters) { //****** ATTACKER FIGHTERS GT TARGET FIGHTERS ****** $temptargfighters=0; //**** T WILL LOOSE ALL FIGHTERS **** } else { //****** ATTACKER FIGHTERS LE TARGET FIGHTERS ****** $temptargfighters=$targetfighters-$attackerfighters; //**** T WILL LOOSE FIGHTERS EQ TO A FIGHTERS **** } if($targetfighters > $attackerfighters) { //****** TARGET FIGHTERS GT ATTACKER FIGHTERS ****** $tempplayfighters=0; //**** A WILL LOOSE ALL FIGHTERS **** } else { //****** TARGET FIGHTERS LE ATTACKER FIGHTERS ****** $tempplayfighters=$attackerfighters-$targetfighters; //**** A WILL LOOSE FIGHTERS EQ TO T FIGHTERS **** } $attackerfighters=$tempplayfighters; $targetfighters=$temptargfighters; } if($targetfighters > 0) { //******** TARGET HAS FIGHTERS - CONTINUE COMBAT - FIGHTERS VS ARMOR ******** if($targetfighters > $attackerarmor) { //****** TARGET FIGHTERS GT ATTACKER ARMOR ****** $attackerarmor=0; //**** A LOOSES ALL ARMOR (A DESTROYED) **** } else { //****** TARGET FIGHTERS LE ATTACKER ARMOR ****** $attackerarmor=$attackerarmor-$targetfighters; //**** A LOOSES ARMOR EQ TO T FIGHTERS **** } } // ********************************* // **** FIX NEGATIVE VALUE VARS **** // ********************************* if ($attackerfighters < 0) $attackerfighters = 0; if ($attackertorps < 0) $attackertorps = 0; if ($attackershields < 0) $attackershields = 0; if ($attackerbeams < 0) $attackerbeams = 0; if ($attackerarmor < 0) $attackerarmor = 0; if ($targetfighters < 0) $targetfighters = 0; if ($targettorps < 0) $targettorps = 0; if ($targetshields < 0) $targetshields = 0; if ($targetbeams < 0) $targetbeams = 0; // ****************************************** // *** CHECK IF ATTACKER SHIP DESTROYED *** // ****************************************** if(!$attackerarmor>0) { playerlog($playerinfo[player_id], LOG_RAW, "Ship destroyed by planetary defenses on planet $planetinfo[name]"); $furangeeisdead = 1; // news $headline="Furangee Attacks ".$planetinfo[name]."!"; $newstext="Furangee ".$playerinfo[character_name]." in the ship ".$shipinfo[ship_name]." led an attack today against ".$ownerinfo[character_name]."s planet ".$planetinfo[name]." but was brought down by heavy planetary defenses. "; if ($playerinfo[score] < $ownerinfo[score]) { $newstext = $newstext . $playerinfo[character_name]." was blinded by the huge riches stored on the planet."; } else { $newstext = $newstext . $playerinfo[character_name]." thought it would be easy money but underestimated the planet defenses."; } $player_id = $playerinfo[player_id]; $news = $db->Execute("INSERT INTO $dbtables[news] (headline, newstext, user_id, date, news_type) VALUES ('$headline','$newstext','$player_id',NOW(), 'attack')"); $free_ore = round($shipinfo[ship_ore]/2); $free_organics = round($shipinfo[ship_organics]/2); $free_goods = round($shipinfo[ship_goods]/2); $ship_value=$upgrade_cost*(round(mypw($upgrade_factor, $shipinfo[hull]))+round(mypw($upgrade_factor, $shipinfo[engines]))+round(mypw($upgrade_factor, $shipinfo[power]))+round(mypw($upgrade_factor, $shipinfo[computer]))+round(mypw($upgrade_factor, $shipinfo[sensors]))+round(mypw($upgrade_factor, $shipinfo[beams]))+round(mypw($upgrade_factor, $shipinfo[torp_launchers]))+round(mypw($upgrade_factor, $shipinfo[shields]))+round(mypw($upgrade_factor, $shipinfo[armor]))+round(mypw($upgrade_factor, $shipinfo[cloak]))); $ship_salvage_rate=rand(10,20); $ship_salvage=$ship_value*$ship_salvage_rate/100; $fighters_lost = $planetinfo[fighters] - $targetfighters; db_kill_player($playerinfo[player_id],$playerinfo[currentship],$planetinfo[owner]); // *** LOG ATTACK TO PLANET OWNER *** playerlog($planetinfo[owner], LOG_PLANET_NOT_DEFEATED, "$planetinfo[name]|$planetinfo[sector_id]|Furangee $playerinfo[character_name]|".NUMBER($free_ore)."|".NUMBER($free_organics)."|".NUMBER($free_goods)."|".NUMBER($ship_salvage_rate)."|".NUMBER($ship_salvage)); // *** UPDATE PLANET *** $db->Execute("UPDATE $dbtables[planets] SET energy=$planetinfo[energy],fighters=fighters-$fighters_lost, torps=torps-$targettorps, ore=ore+$free_ore, goods=goods+$free_goods, organics=organics+$free_organics, credits=credits+$ship_salvage WHERE planet_id=$planetinfo[planet_id]"); } // ********************************************** // *** MUST HAVE MADE IT PAST PLANET DEFENSES *** // ********************************************** else { $armor_lost = $shipinfo[armour_pts] - $attackerarmor; $fighters_lost = $shipinfo[ship_fighters] - $attackerfighters; $target_fighters_lost = $planetinfo[fighters] - $targetfighters; playerlog($playerinfo[player_id], LOG_RAW, "Made it past defenses on planet $planetinfo[name]"); // *** UPDATE ATTACKER *** $db->Execute ("UPDATE $dbtables[ships] SET energy=$shipinfo[ship_energy],fighters=fighters-$fighters_lost, torps=torps-$attackertorps, armour_pts=armour_pts-$armor_lost WHERE player_id=$playerinfo[player_id] AND ship_id=$playerinfo[currentship]"); $shipinfo[ship_fighters] = $attackerfighters; $shipinfo[torps] = $attackertorps; $shipinfo[armour_pts] = $attackerarmor; // *** UPDATE PLANET *** $db->Execute ("UPDATE $dbtables[planets] SET energy=$planetinfo[energy], fighters=$targetfighters, torps=torps-$targettorps WHERE planet_id=$planetinfo[planet_id]"); $planetinfo[fighters] = $targetfighters; $planetinfo[torps] = $targettorps; // *** NOW WE MUST ATTACK ALL SHIPS ON THE PLANET ONE BY ONE *** echo "Planet Info Bug tracker<br>"; echo "Planet info planet ID = $planetinfo[planet_id]<br>"; $resultps = $db->Execute("SELECT * FROM $dbtables[players] WHERE planet_id=$planetinfo[planet_id] AND on_planet='Y'"); $shipsonplanet = $resultps->RecordCount(); if ($shipsonplanet > 0) { while (!$resultps->EOF && $furangeeisdead < 1) { $onplanet = $resultps->fields; furangeetoship($onplanet[player_id]); $resultps->MoveNext(); } } $resultps = $db->Execute("SELECT * FROM $dbtables[players] WHERE planet_id=$planetinfo[planet_id] AND on_planet='Y'"); $shipsonplanet = $resultps->RecordCount(); if ($shipsonplanet == 0 && $furangeeisdead < 1) { // *** MUST HAVE KILLED ALL SHIPS ON PLANET *** playerlog($playerinfo[player_id], LOG_RAW, "Defeated all ships on planet $planetinfo[name]"); // *** LOG ATTACK TO PLANET OWNER *** playerlog($planetinfo[owner], LOG_PLANET_DEFEATED, "$planetinfo[name]|$planetinfo[sector_id]|Furangee $playerinfo[character_name]"); // news $headline="Furangee Defeat Planet ".$planetinfo[name]."!"; $newstext="Furangee ".$playerinfo[character_name]." in the ship ".$shipinfo[ship_name]." defeated ".$ownerinfo[character_name]."s planet ".$planetinfo[name].". "; if ($playerinfo[score] < $ownerinfo[score]) { $newstext = $newstext . $playerinfo[character_name]." mentioned that the bigger they are, the easier the fall."; } else { $newstext = $newstext . $playerinfo[character_name]." took the weak out and stamped on them."; } $player_id = $playerinfo[player_id]; $news = $db->Execute("INSERT INTO $dbtables[news] (headline, newstext, user_id, date, news_type) VALUES ('$headline','$newstext','$player_id',NOW(), 'attack')"); // *** UPDATE PLANET *** $db->Execute("UPDATE $dbtables[planets] SET fighters=0, torps=0, base='N', owner=0, corp=0 WHERE planet_id=$planetinfo[planet_id]"); calc_ownership($planetinfo[sector_id]); } else { // *** MUST HAVE DIED TRYING *** playerlog($playerinfo[player_id], LOG_RAW, "We were KILLED by ships defending planet $planetinfo[name]"); // news $headline="Furangee burns up in attack!"; $newstext="Furangee ".$playerinfo[character_name]." got intimate with deep space today when he tried to attack ".$ownerinfo[character_name]."s planet ".$planetinfo[name].". "; if ($playerinfo[score] < $ownerinfo[score]) { $newstext = $newstext . $playerinfo[character_name]." felt like his time had come and in a note left on the Intergalactic Bulletin Board he said that he wanted to go out in at least a modicum of style."; } else { $newstext = $newstext . $playerinfo[character_name]." was blinded by his own feelings of superiority."; } $player_id = $playerinfo[player_id]; $news = $db->Execute("INSERT INTO $dbtables[news] (headline, newstext, user_id, date, news_type) VALUES ('$headline','$newstext','$player_id',NOW(), 'attack')"); // *** LOG ATTACK TO PLANET OWNER *** playerlog($planetinfo[owner], LOG_PLANET_NOT_DEFEATED, "$planetinfo[name]|$planetinfo[sector_id]|Furangee $playerinfo[character_name]|0|0|0|0|0"); // *** NO SALVAGE FOR PLANET BECAUSE WENT TO SHIP WHO WON ** } } // *** END OF FURANGEE PLANET ATTACK CODE *** //$db->Execute("UNLOCK TABLES"); }