/** * Adjusts deviating cave's effects * * @param dbgame * the link to the game DB * @return all caveIDs */ function adjust_adjustCave($db, $caveID) { global $effectTypeList, $terrainList, $checkOnly; // get cave $cave = getCaveByID($caveID); // get artefact effects $artefactEffects = artefact_recalculateEffects($caveID); // get wonder effects $wonderEffects = wonder_recalc($caveID, $db); // check each effect $adjustments = array(); foreach ($effectTypeList as $effectID => $effect) { // get actual value $actual = $cave[$effect->dbFieldName]; // get nominal value $nominal = $artefactEffects[$effectID] + $wonderEffects[$effectID]; $nominal += (double) $terrainList[$cave['terrain']]['effects'][$effectID]; // check for deviation if ($actual != $nominal) { // log difference adjust_log('%4d: %-30s nominal:%f actual:%f', $caveID, $effect->dbFieldName, $nominal, $actual); // collect adjustments $adjustments[] = sprintf('%s = %f', $effect->dbFieldName, $nominal); } } // prepare query $query = sprintf('UPDATE Cave SET %s WHERE caveID = %d', implode(", ", $adjustments), $caveID); // adjust cave if (0 != sizeof($adjustments) && !$checkOnly) { adjust_log('Adjusting cave %d (%s)', $caveID, $cave['name']); // send query if (!$db->query($query)) { adjust_log('Error! "%s": %s', $query, mysql_error()); } } }
/** * Adjusts deviating cave's effects * * @param dbgame * the link to the game DB * @return all caveIDs */ function adjust_adjustCave($db, $caveID) { global $checkOnly; // get cave $cave = getCaveByID($caveID); // get artefact effects $artefactEffects = artefact_recalculateEffects($caveID); // get wonder effects $wonderEffects = wonder_recalc($caveID, $db); // check each effect $adjustments = array(); foreach ($GLOBALS['effectTypeList'] as $effectID => $effect) { // get actual value $actual = $cave[$effect->dbFieldName]; // get nominal value $nominal = $artefactEffects[$effectID] + $wonderEffects[$effectID]; $nominal += (double) $GLOBALS['terrainList'][$cave['terrain']]['effects'][$effectID]; // check for deviation if ($actual != $nominal) { // log difference adjust_log('%4d: %-30s nominal:%f actual:%f', $caveID, $effect->dbFieldName, $nominal, $actual); // collect adjustments $adjustments[] = sprintf('%s = %f', $effect->dbFieldName, $nominal); } } // prepare query $set = implode(", ", $adjustments); $sql = $db->prepare("UPDATE " . CAVE_TABLE . " SET {$set} WHERE caveID = :caveID"); $sql->bindValue('caveID', $caveID, pdo::PARAM_INT); // adjust cave if (0 != sizeof($adjustments) && !$checkOnly) { adjust_log('Adjusting cave %d (%s)', $caveID, $cave['name']); // send query if (!$sql->execute()) { adjust_log('Error! "%s": %s', $query, $sql->errorInfo()); } } }