mirror of
https://github.com/Shadowss/TravianZ.git
synced 2026-08-14 07:11:02 +00:00
General fixes
+WWs aren't affected anymore by stronger building artifacts +Walls damaging/destruction (wall bonus reduction) during a battle, is now counted +Added a button for normal acess users, for editing/sticking, etc. their own topics (instead of directly display the topic "admin menu") +Fixed some possible warnings
This commit is contained in:
@@ -109,10 +109,10 @@ class Alliance {
|
||||
$hasSwitchedToAdmin = isset($datas['admin']) && !empty($datas['admin']) && $datas['admin'] == "switch_admin";
|
||||
|
||||
return (/*$database->CheckEditRes($datas['aid']) == 1 && */($datas['alliance'] > 0 && (($database->isAllianceOwner($session->uid) == $datas['alliance'] ||
|
||||
($datas['forum_perm'] == 1 && $session->alliance == $datas['alliance'])) &&
|
||||
($mode || $hasSwitchedToAdmin)) ||
|
||||
($datas['forum_perm'] == 1 && $session->alliance == $datas['alliance']))) ||
|
||||
($datas['owner'] == $session->uid && $session->access != ADMIN)) ||
|
||||
($session->access == ADMIN && ($mode || $hasSwitchedToAdmin)));
|
||||
($session->access == ADMIN)) &&
|
||||
($mode || $hasSwitchedToAdmin);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+205
-188
@@ -810,7 +810,13 @@ class Automation {
|
||||
// currently targeted building/field ID in the database (fdata, the fID field, e.g. f1, f2, f3...)
|
||||
$tbid = (int) $catapultTarget;
|
||||
|
||||
$newLevel = $battle->CalculateNewBuildingLevel($battlepart['catapults']['moral'], $battlepart['catapults']['updown'], $tblevel, $battlepart['catapults']['realAttackers'] / ($twoRowsCatapultSetup ? 2 : 1), $data['t8'] / ($twoRowsCatapultSetup ? 2 : 1));
|
||||
$newLevel = $battle->CalculateNewBuildingLevel($battlepart['catapults']['moral'],
|
||||
$battlepart['catapults']['upgrades'],
|
||||
$battlepart['catapults']['downgrades'],
|
||||
$tblevel,
|
||||
$battlepart['catapults']['realAttackers'] / ($twoRowsCatapultSetup ? 2 : 1),
|
||||
$data['t8'] / ($twoRowsCatapultSetup ? 2 : 1),
|
||||
($catapultTarget == 40 ? 1 : $battlepart['catapults']['strongerBuildings']));
|
||||
|
||||
//If that building was present in the building queue, we have to modify his level or remove it
|
||||
$database->modifyBData($data['to'], $tbid, [$newLevel, $tblevel], $tribe);
|
||||
@@ -1157,12 +1163,11 @@ class Automation {
|
||||
//rams attack
|
||||
if (($data['t7']) > 0 && $type == 3) {
|
||||
$basearraywall = $to;
|
||||
if (($walllevel = $database->getFieldLevel($basearraywall['wref'],40, false)) > 0){
|
||||
if (($walllevel = $database->getFieldLevel($basearraywall['wref'], 40, false)) > 0){
|
||||
$wallgid = $database->getFieldLevel($basearraywall['wref'],"40t");
|
||||
$wallid = 40;
|
||||
$w = 4;
|
||||
}
|
||||
else $empty = 1;
|
||||
}
|
||||
|
||||
$tblevel = 1;
|
||||
@@ -1226,7 +1231,7 @@ class Automation {
|
||||
$Attacker['uhero'] = $dataarray[$data_num]['t11'];
|
||||
$hero_pic = "hero";
|
||||
//need to set these variables.
|
||||
$def_wall = 1;
|
||||
$def_wall = 0;
|
||||
$att_tribe = $owntribe;
|
||||
$def_tribe = $targettribe;
|
||||
$residence = 0;
|
||||
@@ -1240,7 +1245,7 @@ class Automation {
|
||||
$att_ab1 = $att_ab2 = $att_ab3 = $att_ab4 = $att_ab5 = $att_ab6 = $att_ab7 = $att_ab8 = 0;
|
||||
$def_ab[31] = $def_ab[32] = $def_ab[33] = $def_ab[34] = $def_ab[35] = $def_ab[36] = $def_ab[37] = $def_ab[38] = 0;
|
||||
|
||||
$empty = 1;
|
||||
$walllevel = 0;
|
||||
$tblevel = 0;
|
||||
$stonemason = 0;
|
||||
}
|
||||
@@ -1379,12 +1384,203 @@ class Automation {
|
||||
|
||||
$battlepart = $battle->calculateBattle($Attacker, $Defender, $def_wall, $att_tribe, $def_tribe, $residence, $attpop, $defpop, $type, $def_ab, $att_ab1, $att_ab2, $att_ab3, $att_ab4, $att_ab5, $att_ab6, $att_ab7, $att_ab8, $tblevel, $stonemason, $walllevel, 0, 0, 0, $AttackerID, $DefenderID, $AttackerWref, $DefenderWref, $conqureby, $enforcementarray);
|
||||
|
||||
//Data for when troops return.
|
||||
//catapults look :D
|
||||
$info_cat = $info_chief = $info_ram = $info_hero = ",";
|
||||
|
||||
//check to see if can destroy village
|
||||
if (count($varray) > 1 && !$database->villageHasArtefact($DefenderWref)) {
|
||||
$can_destroy = 1;
|
||||
}
|
||||
else $can_destroy = 0;
|
||||
|
||||
if($isoasis == 0){
|
||||
if ($type == 3){
|
||||
if (($data['t7'] - $traped7) > 0){
|
||||
if($walllevel > 0){
|
||||
$newLevel = $battle->CalculateNewBuildingLevel($battlepart['rams']['moral'],
|
||||
$battlepart['rams']['upgrades'],
|
||||
$battlepart['rams']['downgrades'],
|
||||
$walllevel,
|
||||
$battlepart['rams']['realAttackers'],
|
||||
$data['t7'],
|
||||
$battlepart['rams']['strongerBuildings']);
|
||||
|
||||
if ($newLevel == 0){
|
||||
$info_ram = "".$ram_pic.",Wall <b>destroyed</b>.";
|
||||
$database->setVillageLevel($data['to'], ["f".$wallid, "f".$wallid."t"], [0, 0]);
|
||||
$pop = $this->recountPop($data['to']);
|
||||
}elseif ($newLevel == $walllevel){
|
||||
$info_ram = "".$ram_pic.",Wall was not damaged.";
|
||||
}else{
|
||||
$info_ram = "".$ram_pic.",Wall damaged from level <b>".$walllevel."</b> to level <b>".$newLevel."</b>.";
|
||||
$database->setVillageLevel($data['to'],"f".$wallid."",$newLevel);
|
||||
}
|
||||
|
||||
//If the wall got damaged/destroyed during the attack
|
||||
//we need to recalculate the whole battle
|
||||
if($newLevel != $walllevel){
|
||||
$battlepart = $battle->calculateBattle($Attacker, $Defender, $newLevel, $att_tribe, $def_tribe, $residence, $attpop, $defpop, $type, $def_ab, $att_ab1, $att_ab2, $att_ab3, $att_ab4, $att_ab5, $att_ab6, $att_ab7, $att_ab8, $tblevel, $stonemason, $newLevel, 0, 0, 0, $AttackerID, $DefenderID, $AttackerWref, $DefenderWref, $conqureby, $enforcementarray);
|
||||
}
|
||||
}
|
||||
else $info_ram = "".$ram_pic.",There is no wall to destroy.";
|
||||
}
|
||||
|
||||
if (($data['t8'] - $traped8) > 0)
|
||||
{
|
||||
$pop = $this->recountPop($data['to']);
|
||||
|
||||
// village has been destroyed
|
||||
if ($pop <= 0) {
|
||||
if ($can_destroy == 1) $info_cat = "".$catp_pic.", Village already destroyed.";
|
||||
else $info_cat = "".$catp_pic.", Village can\'t be destroyed.";
|
||||
}
|
||||
else
|
||||
{
|
||||
// village stands, let's do the damage
|
||||
/**
|
||||
* FIRST CATAPULTS ROW
|
||||
*/
|
||||
|
||||
$basearray = $data['to'];
|
||||
$bdo = $database->getResourceLevel($basearray, false);
|
||||
$catapultTarget = $data['ctar1'];
|
||||
$catapultTarget2 = (isset($data['ctar2']) ? $data['ctar2'] : 0);
|
||||
|
||||
$catapults1TargetRandom = ($catapultTarget == 0);
|
||||
$catapults2WillNotShoot = ($catapultTarget2 == 0);
|
||||
$catapults2TargetRandom = ($catapults2WillNotShoot || $catapultTarget2 == 99);
|
||||
|
||||
// we're manually targetting 1st and/or 2nd row of catapults
|
||||
if (!$catapults1TargetRandom)
|
||||
{
|
||||
$_catapultsTarget1Levels = [];
|
||||
$__catapultsTarget1AltTargets = [];
|
||||
|
||||
// calculate targets for 1st rows of catapults
|
||||
$j = 0;
|
||||
for ($i = 1; $i <= 41; $i++)
|
||||
{
|
||||
if ($i == 41) $i = 99;
|
||||
|
||||
// 1st row of catapults pre-selected target calculations, if needed
|
||||
if (!$catapults1TargetRandom && $bdo['f'.$i.'t'] == $catapultTarget && $bdo['f'.$i] > 0 && $i != 40)
|
||||
{
|
||||
$j++;
|
||||
$_catapultsTarget1Levels[$j]=$bdo['f'.$i];
|
||||
$__catapultsTarget1AltTargets[$j]=$i;
|
||||
}
|
||||
}
|
||||
|
||||
// if we couldn't find a suitable target for 1st row of catapults,
|
||||
// select a random target instead
|
||||
if (!$catapults1TargetRandom) {
|
||||
if ( count( $_catapultsTarget1Levels ) > 0 ) {
|
||||
if ( max( $_catapultsTarget1Levels ) <= 0 ) {
|
||||
$catapultTarget = 0;
|
||||
} else {
|
||||
$catapultTarget = $__catapultsTarget1AltTargets[rand( 1, $j )];
|
||||
}
|
||||
} else {
|
||||
$catapultTarget = 0;
|
||||
$catapults1TargetRandom = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 1st row of catapults set to target randomly
|
||||
if ($catapults1TargetRandom)
|
||||
{
|
||||
$list = [];
|
||||
for ($i = 1; $i <= 41; $i++)
|
||||
{
|
||||
if ($i == 41) $i = 99;
|
||||
if ($bdo['f'.$i] > 0 && $i != 40) $list[] = $i;
|
||||
}
|
||||
$catapultTarget = $list[rand(0, count($list) - 1)];
|
||||
}
|
||||
|
||||
/**
|
||||
* resolve 1st row of catapults
|
||||
*/
|
||||
$village_destroyed = 0;
|
||||
$this->resolveCatapultsDestruction($bdo, $battlepart, $info_cat, $data, $catapultTarget, !$catapults2WillNotShoot, false, $catp_pic, $can_destroy, $isoasis, $village_destroyed, $targettribe);
|
||||
|
||||
/**
|
||||
* SECOND CATAPULTS ROW
|
||||
*/
|
||||
|
||||
// we're manually targetting 2nd row of catapults
|
||||
if (!$catapults2TargetRandom)
|
||||
{
|
||||
$_catapultsTarget2Levels = [];
|
||||
$__catapultsTarget2AltTargets = [];
|
||||
|
||||
// calculate targets for 2nd rows of catapults
|
||||
$j = 0;
|
||||
for ($i = 1; $i <= 41; $i++)
|
||||
{
|
||||
if ($i == 41) $i = 99;
|
||||
|
||||
// 2nd row of catapults pre-selected target calculations, if needed
|
||||
if (!$catapults2TargetRandom && !$catapults2WillNotShoot && $bdo['f'.$i.'t'] == $catapultTarget2 && $bdo['f'.$i] > 0 && $i != 40)
|
||||
{
|
||||
$j++;
|
||||
$_catapultsTarget2Levels[$j] = $bdo['f'.$i];
|
||||
$__catapultsTarget2AltTargets[$j] = $i;
|
||||
}
|
||||
}
|
||||
|
||||
// if we couldn't find a suitable target for 2nd row of catapults,
|
||||
// select a random target instead
|
||||
if (!$catapults2TargetRandom) {
|
||||
if (count($_catapultsTarget2Levels) > 0 ) {
|
||||
if (max($_catapultsTarget2Levels) <= 0 ) {
|
||||
$catapultTarget2 = 99;
|
||||
}
|
||||
else $catapultTarget2 = $__catapultsTarget2AltTargets[rand( 1, $j )];
|
||||
} else {
|
||||
$catapultTarget2 = 99;
|
||||
$catapults2TargetRandom = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 2nd row of catapults set to target randomly
|
||||
if ($catapults2TargetRandom && !$catapults2WillNotShoot)
|
||||
{
|
||||
$list = [];
|
||||
for ($i = 1; $i <= 41; $i++)
|
||||
{
|
||||
if ($i == 41) $i = 99;
|
||||
if ($bdo['f'.$i] > 0 && $i != 40) $list[] = $i;
|
||||
}
|
||||
$catapultTarget2 = $list[ rand(0, count($list) - 1) ];
|
||||
}
|
||||
|
||||
/**
|
||||
* resolve 2nd row of catapults
|
||||
*/
|
||||
if (!$catapults2WillNotShoot) {
|
||||
$this->resolveCatapultsDestruction($bdo, $battlepart, $info_cat, $data, $catapultTarget2, true, true, $catp_pic, $can_destroy, $isoasis, $village_destroyed, $targettribe);
|
||||
}
|
||||
|
||||
// clear resource levels cache, since we might have destroyed buildings/fields by now
|
||||
call_user_func(get_class($database).'::clearResourseLevelsCache');
|
||||
}
|
||||
}
|
||||
} elseif (($data['t7'] - $traped7) > 0) {
|
||||
$info_ram = "".$ram_pic.",Hint: The ram does not work during a raid.";
|
||||
}
|
||||
}
|
||||
else $can_destroy = 0;
|
||||
|
||||
//units attack string for battleraport
|
||||
$unitssend_att = ''.$data['t1'].','.$data['t2'].','.$data['t3'].','.$data['t4'].','.$data['t5'].','.$data['t6'].','.$data['t7'].','.$data['t8'].','.$data['t9'].','.$data['t10'].'';
|
||||
$herosend_att = $data['t11'];
|
||||
|
||||
if ($herosend_att > 0) $unitssend_att_check=$unitssend_att.','.$data['t11'];
|
||||
else $unitssend_att_check=$unitssend_att;
|
||||
if ($herosend_att > 0) $unitssend_att_check = $unitssend_att.','.$data['t11'];
|
||||
else $unitssend_att_check = $unitssend_att;
|
||||
|
||||
//Resetting the enforcement arrays
|
||||
for($i = 1; $i <= 50; $i++) {
|
||||
@@ -1643,7 +1839,7 @@ class Automation {
|
||||
$troopsdead6 = $dead6;
|
||||
$troopsdead7 = $dead7;
|
||||
$troopsdead8 = $dead8;
|
||||
$troopsdead9 = $dead9+1;
|
||||
$troopsdead9 = $dead9 + 1;
|
||||
$troopsdead10 = $dead10;
|
||||
$troopsdead11 = $dead11;
|
||||
|
||||
@@ -1830,186 +2026,7 @@ class Automation {
|
||||
$btotal -= $max_steal;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Data for when troops return.
|
||||
//catapults look :D
|
||||
$info_cat = $info_chief = $info_ram = $info_hero = ",";
|
||||
|
||||
//check to see if can destroy village
|
||||
if (count($varray) > 1 && !$database->villageHasArtefact($DefenderWref)) {
|
||||
$can_destroy = 1;
|
||||
}
|
||||
else $can_destroy = 0;
|
||||
|
||||
if($isoasis == 0)
|
||||
{
|
||||
if ($type == 3)
|
||||
{
|
||||
if (($data['t7'] - $traped7) > 0){
|
||||
$newLevel = $battle->CalculateNewBuildingLevel($battlepart['rams']['moral'], $battlepart['rams']['updown'], $walllevel, $battlepart['rams']['realAttackers'], $data['t7']);
|
||||
if (isset($empty)){
|
||||
$info_ram = "".$ram_pic.",There is no wall to destroy.";
|
||||
} elseif ($newLevel == 0){
|
||||
$info_ram = "".$ram_pic.",Wall <b>destroyed</b>.";
|
||||
$database->setVillageLevel($data['to'], ["f".$wallid, "f".$wallid."t"], [0, 0]);
|
||||
$pop = $this->recountPop($data['to']);
|
||||
}elseif ($newLevel == $walllevel){
|
||||
$info_ram = "".$ram_pic.",Wall was not damaged.";
|
||||
}else{
|
||||
$info_ram = "".$ram_pic.",Wall damaged from level <b>".$walllevel."</b> to level <b>".$newLevel."</b>.";
|
||||
$database->setVillageLevel($data['to'],"f".$wallid."",$newLevel);
|
||||
}
|
||||
}
|
||||
|
||||
if (($data['t8'] - $traped8) > 0)
|
||||
{
|
||||
$pop = $this->recountPop($data['to']);
|
||||
|
||||
// village has been destroyed
|
||||
if ($pop <= 0) {
|
||||
if ($can_destroy == 1) $info_cat = "".$catp_pic.", Village already destroyed.";
|
||||
else $info_cat = "".$catp_pic.", Village can\'t be destroyed.";
|
||||
}
|
||||
else
|
||||
{
|
||||
// village stands, let's do the damage
|
||||
/**
|
||||
* FIRST CATAPULTS ROW
|
||||
*/
|
||||
|
||||
$basearray = $data['to'];
|
||||
$bdo = $database->getResourceLevel($basearray, false);
|
||||
$catapultTarget = $data['ctar1'];
|
||||
$catapultTarget2 = (isset($data['ctar2']) ? $data['ctar2'] : 0);
|
||||
|
||||
$catapults1TargetRandom = ($catapultTarget == 0);
|
||||
$catapults2WillNotShoot = ($catapultTarget2 == 0);
|
||||
$catapults2TargetRandom = ($catapults2WillNotShoot || $catapultTarget2 == 99);
|
||||
|
||||
// we're manually targetting 1st and/or 2nd row of catapults
|
||||
if (!$catapults1TargetRandom)
|
||||
{
|
||||
$_catapultsTarget1Levels = [];
|
||||
$__catapultsTarget1AltTargets = [];
|
||||
|
||||
// calculate targets for 1st rows of catapults
|
||||
$j = 0;
|
||||
for ($i = 1; $i <= 41; $i++)
|
||||
{
|
||||
if ($i == 41) $i = 99;
|
||||
|
||||
// 1st row of catapults pre-selected target calculations, if needed
|
||||
if (!$catapults1TargetRandom && $bdo['f'.$i.'t'] == $catapultTarget && $bdo['f'.$i] > 0 && $i != 40)
|
||||
{
|
||||
$j++;
|
||||
$_catapultsTarget1Levels[$j]=$bdo['f'.$i];
|
||||
$__catapultsTarget1AltTargets[$j]=$i;
|
||||
}
|
||||
}
|
||||
|
||||
// if we couldn't find a suitable target for 1st row of catapults,
|
||||
// select a random target instead
|
||||
if (!$catapults1TargetRandom) {
|
||||
if ( count( $_catapultsTarget1Levels ) > 0 ) {
|
||||
if ( max( $_catapultsTarget1Levels ) <= 0 ) {
|
||||
$catapultTarget = 0;
|
||||
} else {
|
||||
$catapultTarget = $__catapultsTarget1AltTargets[rand( 1, $j )];
|
||||
}
|
||||
} else {
|
||||
$catapultTarget = 0;
|
||||
$catapults1TargetRandom = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 1st row of catapults set to target randomly
|
||||
if ($catapults1TargetRandom)
|
||||
{
|
||||
$list = [];
|
||||
for ($i = 1; $i <= 41; $i++)
|
||||
{
|
||||
if ($i == 41) $i = 99;
|
||||
if ($bdo['f'.$i] > 0 && $i != 40) $list[] = $i;
|
||||
}
|
||||
$catapultTarget = $list[rand(0, count($list) - 1)];
|
||||
}
|
||||
|
||||
/**
|
||||
* resolve 1st row of catapults
|
||||
*/
|
||||
$village_destroyed = 0;
|
||||
$this->resolveCatapultsDestruction($bdo, $battlepart, $info_cat, $data, $catapultTarget, !$catapults2WillNotShoot, false, $catp_pic, $can_destroy, $isoasis, $village_destroyed, $targettribe);
|
||||
|
||||
/**
|
||||
* SECOND CATAPULTS ROW
|
||||
*/
|
||||
|
||||
// we're manually targetting 2nd row of catapults
|
||||
if (!$catapults2TargetRandom)
|
||||
{
|
||||
$_catapultsTarget2Levels = [];
|
||||
$__catapultsTarget2AltTargets = [];
|
||||
|
||||
// calculate targets for 2nd rows of catapults
|
||||
$j = 0;
|
||||
for ($i = 1; $i <= 41; $i++)
|
||||
{
|
||||
if ($i == 41) $i = 99;
|
||||
|
||||
// 2nd row of catapults pre-selected target calculations, if needed
|
||||
if (!$catapults2TargetRandom && !$catapults2WillNotShoot && $bdo['f'.$i.'t'] == $catapultTarget2 && $bdo['f'.$i] > 0 && $i != 40)
|
||||
{
|
||||
$j++;
|
||||
$_catapultsTarget2Levels[$j] = $bdo['f'.$i];
|
||||
$__catapultsTarget2AltTargets[$j] = $i;
|
||||
}
|
||||
}
|
||||
|
||||
// if we couldn't find a suitable target for 2nd row of catapults,
|
||||
// select a random target instead
|
||||
if (!$catapults2TargetRandom) {
|
||||
if (count($_catapultsTarget2Levels) > 0 ) {
|
||||
if (max($_catapultsTarget2Levels) <= 0 ) {
|
||||
$catapultTarget2 = 99;
|
||||
}
|
||||
else $catapultTarget2 = $__catapultsTarget2AltTargets[rand( 1, $j )];
|
||||
} else {
|
||||
$catapultTarget2 = 99;
|
||||
$catapults2TargetRandom = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 2nd row of catapults set to target randomly
|
||||
if ($catapults2TargetRandom && !$catapults2WillNotShoot)
|
||||
{
|
||||
$list = [];
|
||||
for ($i = 1; $i <= 41; $i++)
|
||||
{
|
||||
if ($i == 41) $i = 99;
|
||||
if ($bdo['f'.$i] > 0 && $i != 40) $list[] = $i;
|
||||
}
|
||||
$catapultTarget2 = $list[ rand(0, count($list) - 1) ];
|
||||
}
|
||||
|
||||
/**
|
||||
* resolve 2nd row of catapults
|
||||
*/
|
||||
if (!$catapults2WillNotShoot) {
|
||||
$this->resolveCatapultsDestruction($bdo, $battlepart, $info_cat, $data, $catapultTarget2, true, true, $catp_pic, $can_destroy, $isoasis, $village_destroyed, $targettribe);
|
||||
}
|
||||
|
||||
// clear resource levels cache, since we might have destroyed buildings/fields by now
|
||||
call_user_func(get_class($database).'::clearResourseLevelsCache');
|
||||
}
|
||||
}
|
||||
} elseif (($data['t7'] - $traped7) > 0) {
|
||||
$info_ram = "".$ram_pic.",Hint: The ram does not work during a raid.";
|
||||
}
|
||||
}
|
||||
else $can_destroy = 0;
|
||||
}
|
||||
|
||||
//chiefing village
|
||||
//there are senators
|
||||
|
||||
+57
-55
@@ -23,8 +23,9 @@ class Battle {
|
||||
|
||||
public function procSim($post) {
|
||||
global $form;
|
||||
|
||||
// receive form and process
|
||||
if(isset($post['a1_v']) && (isset($post['a2_v1']) || isset($post['a2_v2']) || isset($post['a2_v3']) || isset($post['a2_v4']))) {
|
||||
if(isset($post['a1_v']) && (isset($post['a2_v1']) || isset($post['a2_v2']) || isset($post['a2_v3']) || isset($post['a2_v4']))){
|
||||
$_POST['mytribe'] = $post['a1_v'];
|
||||
|
||||
$target = [];
|
||||
@@ -33,59 +34,54 @@ class Battle {
|
||||
if(isset($post['a2_v3'])) array_push($target, 3);
|
||||
if(isset($post['a2_v4'])) array_push($target, 4);
|
||||
if(isset($post['a2_v5'])) array_push($target, 5);
|
||||
|
||||
|
||||
$_POST['target'] = $target;
|
||||
if(isset($post['h_off_bonus'])) {
|
||||
if (intval($post['h_off_bonus']) > 20) $post['h_off_bonus'] = 20;
|
||||
if(isset($post['h_off_bonus'])){
|
||||
if(intval($post['h_off_bonus']) > 20) $post['h_off_bonus'] = 20;
|
||||
}
|
||||
else $post['h_off_bonus']=0;
|
||||
|
||||
if(isset($post['h_def_bonus'])) {
|
||||
if (intval($post['h_def_bonus']) > 20) $post['h_def_bonus'] = 20;
|
||||
else $post['h_off_bonus'] = 0;
|
||||
|
||||
if(isset($post['h_def_bonus'])){
|
||||
if(intval($post['h_def_bonus']) > 20) $post['h_def_bonus'] = 20;
|
||||
}
|
||||
else $post['h_def_bonus']=0;
|
||||
|
||||
if(isset($post['a1_1'])) {
|
||||
$sum = $sum2 = $post['walllevel'] = 0;
|
||||
for($i=1;$i<=10;$i++) {
|
||||
$sum += (!empty($post['a1_'.$i]) ? $post['a1_'.$i] : 0);
|
||||
else $post['h_def_bonus'] = 0;
|
||||
|
||||
$sum = 0;
|
||||
for($i = 1; $i <= 10; $i++) $sum += (!empty($post['a1_'.$i]) ? $post['a1_'.$i] : 0);
|
||||
|
||||
if($sum > 0){
|
||||
$post['palast'] = intval($post['palast']);
|
||||
if($post['palast'] > 20) $post['palast'] = 20;
|
||||
|
||||
for($i = 1; $i <= 5; $i++){
|
||||
if(isset($post['wall'.$i])){
|
||||
$post['wall'.$i] = intval($post['wall'.$i]);
|
||||
if($post['wall'.$i] > 20) $post['wall'.$i] = 20;
|
||||
elseif($post['wall'.$i] < 0) $post['wall'.$i] = 0;
|
||||
$post['walllevel'] = $post['wall'.$i];
|
||||
}
|
||||
}
|
||||
if($sum > 0) {
|
||||
$post['palast'] = intval($post['palast']);
|
||||
if($post['palast'] > 20) $post['palast'] = 20;
|
||||
|
||||
if(isset($post['wall1'])) {
|
||||
$post['wall1'] = intval($post['wall1']);
|
||||
if ($post['wall1'] > 20) $post['wall1']=20;
|
||||
if ($post['walllevel']==0) $post['walllevel']=$post['wall1'];
|
||||
}
|
||||
if(isset($post['wall2'])) {
|
||||
$post['wall2'] = intval($post['wall2']);
|
||||
if ($post['wall2'] > 20) $post['wall2']=20;
|
||||
if ($post['walllevel']==0) $post['walllevel']=$post['wall2'];
|
||||
}
|
||||
if(isset($post['wall3'])) {
|
||||
$post['wall3'] = intval($post['wall3']);
|
||||
if ($post['wall3'] > 20) $post['wall3']=20;
|
||||
if ($post['walllevel']==0) $post['walllevel']=$post['wall3'];
|
||||
}
|
||||
if(isset($post['wall4'])) {
|
||||
$post['wall4'] = intval($post['wall4']);
|
||||
if ($post['wall4'] > 20) $post['wall4']=20;
|
||||
if ($post['walllevel']==0) $post['walllevel']=$post['wall4'];
|
||||
}
|
||||
if(isset($post['wall5'])) {
|
||||
$post['wall5'] = intval($post['wall5']);
|
||||
if ($post['wall5'] > 20) $post['wall5']=20;
|
||||
if ($post['walllevel']==0) $post['walllevel']=$post['wall5'];
|
||||
}
|
||||
$post['tribe'] = $target[0];
|
||||
$post['tribe'] = $target[0];
|
||||
$_POST['result'] = $this->simulate($post);
|
||||
$newWallLevel = $_POST['result'][7];
|
||||
$oldWallLevel = $_POST['result'][8];
|
||||
|
||||
//If the wall level is reduce, we have to re-do the whole battle
|
||||
if($newWallLevel != $oldWallLevel){
|
||||
$post['walllevel'] = $newWallLevel;
|
||||
$_POST['result'] = $this->simulate($post);
|
||||
$form->valuearray = $post;
|
||||
|
||||
//Reset the datas
|
||||
$_POST['result'][7] = $newWallLevel;
|
||||
$_POST['result'][8] = $post['walllevel'] = $oldWallLevel;
|
||||
}
|
||||
|
||||
$form->valuearray = $post;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function getBattleHero($uid) {
|
||||
global $database;
|
||||
$heroarray = $database->getHero($uid);
|
||||
@@ -551,19 +547,21 @@ class Battle {
|
||||
$wctp *= ($catp + $upgrades);
|
||||
|
||||
//catapults downgrades
|
||||
$downgrades = ($stonemason > 0 ? $bid34[$stonemason]['attri'] / 100 : 1) / $strongerbuildings;
|
||||
$downgrades = ($stonemason > 0 ? $bid34[$stonemason]['attri'] / 100 : 1);
|
||||
|
||||
//catapults moral
|
||||
$catpMoral = pow($attpop / ($defpop > 0 ? $defpop : 1) , 0.3);
|
||||
|
||||
// New level of the building (only for warsim.php)
|
||||
$result[3] = $this->calculateNewBuildingLevel($catpMoral, $upgrades / $downgrades, $tblevel, $wctp, $catp);
|
||||
$result[3] = $this->calculateNewBuildingLevel($catpMoral, $upgrades, $downgrades, $tblevel, $wctp, $catp, $strongerbuildings);
|
||||
$result[4] = $tblevel;
|
||||
|
||||
// Results for Automation.php
|
||||
$result['catapults']['moral'] = $catpMoral;
|
||||
$result['catapults']['updown'] = $upgrades / $downgrades;
|
||||
$result['catapults']['upgrades'] = $upgrades;
|
||||
$result['catapults']['downgrades'] = $downgrades;
|
||||
$result['catapults']['realAttackers'] = $wctp;
|
||||
$result['catapults']['strongerBuildings'] = $strongerbuildings;
|
||||
}
|
||||
|
||||
if($ram > 0 && $walllevel != 0) {
|
||||
@@ -574,16 +572,18 @@ class Battle {
|
||||
$wctp = ($wctp >= 1) ? 1 - 0.5 / $wctp : 0.5 * $wctp;
|
||||
$wctp *= ($ram) + $upgrades;
|
||||
|
||||
$downgrades = ($stonemason > 0 ? $bid34[$stonemason]['attri'] / 100 : 1) / $strongerbuildings;
|
||||
$downgrades = ($stonemason > 0 ? $bid34[$stonemason]['attri'] / 100 : 1);
|
||||
|
||||
// New level of the building (only for warsim.php)
|
||||
$result[7] = $this->calculateNewBuildingLevel(1, $upgrades / $downgrades, $walllevel, $wctp, $ram);
|
||||
$result[7] = $this->calculateNewBuildingLevel(1, $upgrades, $downgrades, $walllevel, $wctp, $ram, $strongerbuildings * 5);
|
||||
$result[8] = $walllevel;
|
||||
|
||||
// Results for Automation.php
|
||||
$result['rams']['moral'] = 1;
|
||||
$result['rams']['updown'] = $upgrades / $downgrades;
|
||||
$result['rams']['upgrades'] = $upgrades;
|
||||
$result['rams']['downgrades'] = $downgrades;
|
||||
$result['rams']['realAttackers'] = $wctp;
|
||||
$result['rams']['strongerBuildings'] = $strongerbuildings * 5;
|
||||
}
|
||||
|
||||
$result[6] = pow($rap / ($rdp * $moralbonus > 0 ? $rdp * $moralbonus : 1), $Mfactor);
|
||||
@@ -738,23 +738,25 @@ class Battle {
|
||||
* Calculates the new building level, after catapults/rams have damaged it
|
||||
*
|
||||
* @param float $moral The catapults/rams battle moral, 1 < moral < 3 => (Total attacker points / Total defender points)^3
|
||||
* @param int $upDown (Upgrades / Downgrades) ratio of catapults/rams made in the Blacksmith
|
||||
* @param int $upgrades Upgrades of catapults/rams made in the blacksmith
|
||||
* @param int $downgrades Defender bonuses, such as the stonemason's lodge
|
||||
* @param int $actualLevel The level of the building before the battle
|
||||
* @param int $realAttackers Effective catapults/rams involved in the building damage
|
||||
* @param int $totalAttackers Total catapults/rams sent in the attack
|
||||
* @param int $strongerBuildings Indicates the defender artifacts bonus against catapults
|
||||
* @return int Returns the new level of the damaged building
|
||||
*/
|
||||
|
||||
public function CalculateNewBuildingLevel($moral, $upDown, $actualLevel, $realAttackers, $totalAttackers)
|
||||
public function CalculateNewBuildingLevel($moral, $upgrades, $downgrades, $actualLevel, $realAttackers, $totalAttackers, $strongerBuildings)
|
||||
{
|
||||
if($moral < 1) $moral = 1;
|
||||
elseif($moral > 3) $moral = 3;
|
||||
|
||||
$needMax = round($this->CalculateNeededCatapults($moral, $upDown, $actualLevel));
|
||||
$needMax = round($this->CalculateNeededCatapults($moral, $upgrades / ($downgrades * $strongerBuildings), $actualLevel));
|
||||
if($needMax <= $realAttackers) return 0;
|
||||
for($i = $actualLevel - 1; $i >= 1; $i--)
|
||||
{
|
||||
$need = $this->CalculateNeededCatapults($moral, $upDown, $i);
|
||||
$need = $this->CalculateNeededCatapults($moral, $upgrades / ($downgrades * $strongerBuildings), $i);
|
||||
if(min($realAttackers, $totalAttackers) / ($needMax - $need) <= 1) return ++$i;
|
||||
}
|
||||
|
||||
@@ -765,7 +767,7 @@ class Battle {
|
||||
* Calculate the needed catapults/rams to completely destroy a building/wall
|
||||
*
|
||||
* @param float $moral The catapults/rams battle moral
|
||||
* @param int $upDown (Upgrades / Downgrades) ratio of catapults/rams made in the Blacksmith
|
||||
* @param int $upDown (Upgrades / Downgrades / Stronger buildings) ratio of catapults/rams
|
||||
* @param int $actualLevel The level of the building before the battle
|
||||
* @return float Returns the needed catapults/rams to destroy a building/wall
|
||||
*/
|
||||
|
||||
@@ -11,11 +11,13 @@ if($session->access == BANNED){
|
||||
}
|
||||
|
||||
$cat_id = $_GET['fid'];
|
||||
$forumData = reset($database->ForumCatEdit($cat_id));
|
||||
$CatName = stripslashes($forumData['forum_name']);
|
||||
$forumInfo = $database->ForumCatEdit($cat_id);
|
||||
|
||||
//Check if we're viewing a valid forum
|
||||
if(empty($CatName)) $alliance->redirect($_GET);
|
||||
if(empty($forumInfo)) $alliance->redirect($_GET);
|
||||
|
||||
$forumData = reset($forumInfo);
|
||||
$CatName = stripslashes($forumData['forum_name']);
|
||||
|
||||
$opt = $database->getAlliPermissions($session->uid, $aid);
|
||||
$ChckTopic = $database->CheckCatTopic($cat_id);
|
||||
@@ -84,8 +86,6 @@ echo '<tr>
|
||||
</tbody></table><p>
|
||||
<a href="allianz.php?s=2&pid=<?php echo $aid; ?>&fid=<?php echo $cat_id; ?>&ac=newtopic"><img id="fbtn_post" class="dynamic_img" src="img/x.gif" alt="Post new thread" /></a>
|
||||
<?php
|
||||
if((isset($opt['opt5']) && $opt['opt5']== 1) || $session->access == ADMIN){
|
||||
echo '<a href="allianz.php?s=2&fid='.$cat_id.((isset($_GET['admin']) && !empty($_GET['admin']) && $_GET['admin'] == "switch_admin") ? "" : "&admin=switch_admin").'" title="Toggle Admin mode"><img class="switch_admin dynamic_img" src="img/x.gif" alt="Toggle Admin mode" /></a>';
|
||||
}
|
||||
echo '<a href="allianz.php?s=2&fid='.$cat_id.((isset($_GET['admin']) && !empty($_GET['admin']) && $_GET['admin'] == "switch_admin") ? "" : "&admin=switch_admin").'" title="Toggle Admin mode"><img class="switch_admin dynamic_img" src="img/x.gif" alt="Toggle Admin mode" /></a>';
|
||||
?>
|
||||
</p>
|
||||
+8
-1
@@ -33,7 +33,14 @@ if(isset($_GET['s'])) $automation->isWinner();
|
||||
|
||||
if(isset($_GET['fid']) || isset($_GET['fid2'])){
|
||||
$fid = preg_replace("/[^0-9]/","",!empty($_GET['fid']) ? $_GET['fid'] : $_GET['fid2']);
|
||||
$forum_type = reset($database->ForumCatEdit($fid));
|
||||
$forumInfos = $database->ForumCatEdit($fid);
|
||||
|
||||
if(empty($forumInfos)){
|
||||
header("Location: ".$_SERVER['PHP_SELF']);
|
||||
exit;
|
||||
}
|
||||
|
||||
$forum_type = reset($forumInfos);
|
||||
if (!empty($forum_type)) {
|
||||
if($forum_type['forum_area'] != 1 && !$alliance->isForumAccessible($fid)){
|
||||
if($forum_type['alliance'] != $session->alliance){
|
||||
|
||||
Reference in New Issue
Block a user