/** * @method POST * @api resurrect */ public function resurrect() { $characters = new Character(); $adr_char = $characters->getCharacterByID($_POST['character_id']); $cost = $this->getCosts($_POST['character_id']); $cost = $cost['resurrect_price']; $user = new User(); $points = $user->getPoints(); if ($points['user_points'] < $cost) { return $this->response(array('status' => 0, 'message' => ADR::Lang("Adr_lack_points"))); } if ($adr_char['character_hp'] > 0) { return $this->response(array('status' => 0, 'message' => ADR::Lang("Adr_temple_heal_instead"))); } $user->subtractPoints($cost); $this->replenish($adr_char); return $this->response(array('status' => 1, 'current_points' => $points['user_points'] - $cost, 'message' => ADR::Lang("Adr_temple_resurrected"))); }
private function win($bat, $monster, $challenger) { // The monster is dead , give money and xp to the users , then update the database $adr_general = ADR::getGeneralConfig(); // Get the experience earned $exp = rand($adr_general['battle_base_exp_min'], $adr_general['battle_base_exp_max']); if ($monster['monster_level'] - $challenger['character_level'] > 1) { $exp = floor(($monster['monster_level'] - $challenger['character_level']) * $adr_general['battle_base_exp_modifier'] / 100); } // Get the money earned $reward = rand($adr_general['battle_base_reward_min'], $adr_general['battle_base_reward_max']); if ($monster['monster_level'] - $challenger['character_level'] > 1) { $reward = floor(($monster['monster_level'] - $challenger['character_level']) * $adr_general['battle_base_reward_modifier'] / 100); } $this->updateBattleList(array('battle_result' => 1, 'battle_opponent_hp' => 0, 'battle_finish' => time(), 'battle_text' => '')); $user = new User(); $points = $user->getPoints(); $user->addPoints($reward); /*$sql = " UPDATE " . ADR_CHARACTERS_TABLE . " SET character_xp = character_xp + $exp , character_victories = character_victories + 1 , character_sp = character_sp + '" . $bat['battle_opponent_sp'] . "' WHERE character_id = $user_id ";*/ $db = DB::instance(); $db->execute("UPDATE adr_characters SET\n character_xp = character_xp + {$exp},\n character_victories = character_victories + 1,\n character_sp = character_sp + {$bat['battle_opponent_sp']}\n WHERE character_id = {$bat['battle_challenger_id']}"); /* // Remove item stolen status $sql = "UPDATE " . ADR_SHOPS_ITEMS_TABLE . " SET item_monster_thief = 0 WHERE item_owner_id = $user_id "; if( !($result = $db->sql_query($sql)) ) { message_die(GENERAL_ERROR, 'Could not update stolen item status', '', __LINE__, __FILE__, $sql); } // Delete broken items from users inventory $sql = " DELETE FROM " . ADR_SHOPS_ITEMS_TABLE . " WHERE item_duration < 1 AND item_owner_id = $user_id "; if( !($result = $db->sql_query($sql)) ) { message_die(GENERAL_ERROR, 'Could not delete broken items', '', __LINE__, __FILE__, $sql); }*/ $user_points = $points['user_points'] + $reward; $message = array(sprintf(ADR::Lang('Adr_battle_won'), $bat['battle_challenger_dmg'], $exp, $bat['battle_opponent_sp'], $reward, $adr_general['points_name'])); $stolen = false; if ($stolen && $stolen['item_name'] != '') { array_push($message, sprintf(ADR::Lang('Adr_battle_stolen_items'), $monster['monster_name'])); } return array('message' => $message, 'exp' => $exp, 'sp' => $bat['battle_opponent_sp'], 'reward' => $reward, 'user_points' => $user_points); }