Skip to content

Commit

Permalink
[fedorablewill#34] New Data System - Battles
Browse files Browse the repository at this point in the history
  • Loading branch information
fedorablewill committed Jan 9, 2018
1 parent 823a0ec commit 4a0a902
Show file tree
Hide file tree
Showing 5 changed files with 83 additions and 14 deletions.
2 changes: 1 addition & 1 deletion api/v1/PtuAPI.php
Original file line number Diff line number Diff line change
Expand Up @@ -394,7 +394,7 @@ public function data() {
}
}
else if (!is_null($this->args[0]) && $this->method == "GET")
return $app->getCharacterById($this->args[0]);
return $app->getCharacterById($this->args[0], array_key_exists("buffs", $_GET) ? $_GET['buffs'] : false);
else if (!is_null($this->args[0]) && $this->method == "POST")
return $app->saveCharacterData($this->args[0], $this->request);
}
Expand Down
12 changes: 6 additions & 6 deletions js/ptu-battle.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@ var ActionImpl = {
var dmg_bonus = mods && mods['dmg_bonus'] ? mods['dmg_bonus'] : 0,
acc_bonus = mods && mods['acc_bonus'] ? mods['acc_bonus'] : 0;

var dealer = getJSONNonAsync("api/v1/data/character/" + dealer_id);
var target = target_id !== "other" ? getJSONNonAsync("api/v1/data/character/" + target_id) : null;
var dealer = CharacterHelper.fetchCharWithBuffs(dealer_id);
var target = target_id !== "other" ? CharacterHelper.fetchCharWithBuffs(target_id) : null;

if ($.type(move) !== "object") {
move = getJSONNonAsync("api/v1/moves/" + move);
Expand Down Expand Up @@ -231,7 +231,7 @@ var ActionImpl = {
damageCharacter: function (target, moveType, moveIsSpecial, damage) {

if (target && $.type(target) !== "object") {
target = getJSONNonAsync("api/v1/data/character/" + target);
target = CharacterHelper.fetchCharWithBuffs(target);
}

damage -= moveIsSpecial ? target["Sdef"] : target["Def"];
Expand Down Expand Up @@ -328,11 +328,11 @@ var ActionImpl = {
// If Character ID's were provided instead of JSON, fetch JSON

if (target && $.type(target) !== "object") {
target = getJSONNonAsync("api/v1/data/character/" + target);
target = CharacterHelper.fetchCharWithBuffs(target);
}

if (dealer && $.type(dealer) !== "object") {
dealer = getJSONNonAsync("api/v1/data/character/" + dealer);
dealer = CharacterHelper.fetchCharWithBuffs(dealer);
}

// If trigger is a prereq
Expand Down Expand Up @@ -364,7 +364,7 @@ var ActionImpl = {
else if (trigger.type==="CS"){
//Raising/lowering stats
$.each(trigger.stat, function(k, stat){
CharacterHelper.modifyCombatStage(char["CharacterId"], trigger.stat, trigger.value);
CharacterHelper.modifyCombatStage(char["CharacterId"], stat, trigger.value);

// Log change
if (trigger.value > 0)
Expand Down
49 changes: 43 additions & 6 deletions js/ptu-char.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,41 @@
var CharacterHelper = {
fetchCharWithBuffs: function (charId) {
var char = getJSONNonAsync("api/v1/data/character/" + charId, {"buffs": true});

$.each(char["Buffs"], function (k, v) {
// TODO prereqs
if (v.type === "CS" && !v.prereq) {
var multiplier = getStageMultiplier(parseInt(v.value));

switch (v.target_stat) {
case "HP":
char["Hp"] = Math.round(char["Hp"] * multiplier);
break;
case "ATK":
char["Atk"] = Math.round(char["Atk"] * multiplier);
break;
case "DEF":
char["Def"] = Math.round(char["Def"] * multiplier);
break;
case "SDEF":
case "SPDEF":
char["Sdef"] = Math.round(char["Sdef"] * multiplier);
break;
case "SATK":
case "SPATK":
char["Satk"] = Math.round(char["Satk"] * multiplier);
break;
case "SPD":
case "SPEED":
char["Spd"] = Math.round(char["Spd"] * multiplier);
break;
}
}
});

return char;
},

getEvadeBonus: function (char_id) {
//TODO implement
return 0;
Expand All @@ -11,17 +48,17 @@ var CharacterHelper = {
}
else {
$.post("api/v1/data/character/cs", {
"characterId": charId,
"character_id": charId,
"stat": stat,
"value": amnt
}, function (response) {
if ($.isNumeric(response)) {
// Notify client
sendMessage(battle[charId]['client_id'], JSON.stringify({
"type": "data_changed",
"field": "stage-" + stat,
"value": parseInt(response)
}));
// sendMessage(battle[charId]['client_id'], JSON.stringify({ TODO
// "type": "data_changed",
// "field": "stage-" + stat,
// "value": parseInt(response)
// }));
}
});
}
Expand Down
15 changes: 15 additions & 0 deletions js/ptu-io.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,4 +52,19 @@ function getJSONNonAsync(url) {
}
});
return result;
}

function getJSONNonAsync(url, data) {
var result;
$.ajax({
type:'GET',
url:url,
dataType:'json',
async:false,
data: data,
success:function(data){
result = data;
}
});
return result;
}
19 changes: 18 additions & 1 deletion lib/propel2/src/Propel/PtuToolkit/PtuApp.php
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ public function getCampaignById($campaignId) {
* @param $characterId
* @return array
*/
public function getCharacterById($characterId) {
public function getCharacterById($characterId, $fetchBuffs = false) {
$char = CharactersQuery::create()->findOneByCharacterId($characterId)->toArray();

$char["Hp"] = $char["BaseHp"] + $char["LvlUpHp"] + $char["AddHp"];
Expand All @@ -118,9 +118,26 @@ public function getCharacterById($characterId) {
$char["Sdef"] = $char["BaseSdef"] + $char["LvlUpSdef"] + $char["AddSdef"];
$char["Spd"] = $char["BaseSpd"] + $char["LvlUpSpd"] + $char["AddSpd"];

if ($fetchBuffs) {
$char["Buffs"] = $this->getCharacterBuffs($characterId);
}

return $char;
}

public function getCharacterBuffs($characterId) {
$sql = "SELECT cb.prereq, cb.type, cb.value, cb.target_stat FROM character_buffs cb
INNER JOIN battles b ON cb.battle_id = b.battle_id
WHERE b.is_active > 0 AND cb.character_id=:cId";

$conn = Propel::getConnection();
$st = $conn->prepare($sql);
$st->bindParam('cId', $characterId);
$st->execute();

return $st->fetchAll(PDO::FETCH_ASSOC);
}

public function getCharacterMoves($characterId) {
$charMoves = CharactersQuery::create()->findOneByCharacterId($characterId)->getCharacterMovessJoinMoves();
$moves = array();
Expand Down

0 comments on commit 4a0a902

Please sign in to comment.