Skip to content

Commit

Permalink
Merge branch 'master' into test/lighthouse-action
Browse files Browse the repository at this point in the history
  • Loading branch information
tchalvak authored Jul 21, 2022
2 parents b3c5a46 + 12a4248 commit aaf493c
Show file tree
Hide file tree
Showing 22 changed files with 97 additions and 66 deletions.
4 changes: 4 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@
-
-

## Before

## After

## _Attached Screenshot of my change:_

## _Things that make review take longer:_
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
2 changes: 2 additions & 0 deletions deploy/lib/control/AttackController.php
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,9 @@ private function combat(Player $attacker, Player $target, int $required_turns=0,
}

$target->save();

$attacker->save();
$attacker->updateLastStartedAttack(); // Saving times can lead to time differences

return new StreamedViewResponse('Battle Status', 'attack_mod.tpl', get_defined_vars(), ['quickstat' => 'player' ]);
}
Expand Down
27 changes: 11 additions & 16 deletions deploy/lib/control/AttackLegal.php
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ public function sameDomain(Player $target, Player $self): bool {
*
* @return bool
*/
private function isOverTimeLimit(): bool {
private function isNotHittingRateLimit(Player $attacker): bool {
$attackIntervalLimit = '.25'; // Originally .2
$lastAttackQuery = "SELECT player_id FROM players
WHERE player_id = :char_id
Expand All @@ -113,24 +113,25 @@ private function isOverTimeLimit(): bool {
OR last_started_attack is null
) LIMIT 1";

// *** Returns a player id if the enough time has passed, or else or false/null. ***
return (bool) query_item(
// *** Returns a player id to cast if the enough time has passed, or else or false/null. ***
$res = query_item(
$lastAttackQuery,
[
':char_id' => intval($this->attacker->id()),
':char_id' => intval($attacker->id()),
':interval' => $attackIntervalLimit.' second',
]
);
return !(null === $res || false === $res);
}

/**
* Just update the last attack attempt of a player in the database.
* Update the last attack datetime to be able to rate limit check next time
*/
private function updateLastAttack(Player $attacker): bool {
public function updateLastAttack(Player $attacker): bool {
// updates the timestamp of the last_attacked column to slow excessive attacks.
$update_last_attacked = "UPDATE players SET last_started_attack = now() WHERE player_id = :pid";
$updated = update_query($update_last_attacked, [':pid'=>$attacker->id()]);
return (bool) $updated;
$query = "UPDATE players SET last_started_attack = now() WHERE player_id = :char_id";
$updated = !!update_query($query, [':char_id' => intval($attacker->id())]);
return $updated;
}

/**
Expand Down Expand Up @@ -163,14 +164,8 @@ public function check(bool $update_timer = true): bool {
return false;
}

$timing_allowed = $this->isOverTimeLimit();

if ($timing_allowed && $update_timer) {
$this->updateLastAttack($attacker);
}

// *** START OF ILLEGAL ATTACK ERROR LIST ***
if (!$timing_allowed && $update_timer) {
if (!$this->isNotHittingRateLimit($attacker)) {
$this->error = 'Even the fastest ninja cannot act more than four times a second.';
} elseif (empty($target->uname)) {
$this->error = 'Your target does not exist.';
Expand Down
2 changes: 1 addition & 1 deletion deploy/lib/control/PlayerController.php
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ public function index(Container $p_dependencies): StreamedViewResponse {
$self = ($viewing_player_obj->id() === $target_player_obj->id());
$params = ['required_turns'=>0, 'ignores_stealth'=>true];
$AttackLegal = new AttackLegal($viewing_player_obj, $target_player_obj, $params);
$AttackLegal->check(false);
$AttackLegal->check(false); // Just for display only check, so don't update rate limiter
$i_am_dead = $AttackLegal->iAmDead();
$attack_error = $AttackLegal->getError();

Expand Down
10 changes: 10 additions & 0 deletions deploy/lib/data/Player.php
Original file line number Diff line number Diff line change
Expand Up @@ -355,6 +355,16 @@ public function isActive(): bool {
return (bool) $this->vo->active;
}

/**
* Specially updates last_started_attack
*/
public function updateLastStartedAttack() {
update_query('update players set last_started_attack = now() where player_id = :pid', [':pid' => $this->id()]);
$this->last_started_attack = query_item('select last_started_attack from players where player_id = :pid', [':pid' => $this->id()]);
return $this->last_started_attack;
}


/**
* @return boolean
* hardcoded hack at the moment
Expand Down
2 changes: 1 addition & 1 deletion deploy/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ attrs==21.2.0
certifi==2022.6.15
chardet==4.0.0
idna==3.2
lxml==4.9.0
lxml==4.9.1
more-itertools==8.8.0
pluggy==0.13.1
py==1.10.0
Expand Down
10 changes: 5 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
"browse:epics": "xdg-open https://localhost:8765/epics",
"browse:repo": "xdg-open https://github.com/BitLucid/ninjawars/",
"browse:deploybot": "xdg-open https://ninjawars.deploybot.com/",
"repo": "yarn github",
"repo": "yarn browse:repo",
"unit-test": "test",
"test": "karma start deploy/tests/karma.conf.js --single-run"
},
Expand All @@ -43,11 +43,11 @@
},
"homepage": "https://github.com/BitLucid/ninjawars#readme",
"devDependencies": {
"@types/eslint": "^8.4.3",
"eslint": "^8.18.0",
"@types/eslint": "^8.4.5",
"eslint": "^8.20.0",
"eslint-config-airbnb": "^19.0.4",
"eslint-plugin-import": "^2.26.0",
"eslint-plugin-jsx-a11y": "^6.5.1",
"eslint-plugin-jsx-a11y": "^6.6.0",
"eslint-plugin-react": "^7.30.1",
"eslint-plugin-react-hooks": "4.6.0",
"husky": "^8.0.1",
Expand All @@ -58,7 +58,7 @@
"karma-requirejs": "^1.1.0",
"karma-sinon": "^1.0.5",
"prettier": "2.7.1",
"puppeteer": "^15.0.0",
"puppeteer": "^15.4.0",
"requirejs": "^2.3.6",
"sinon": "^14.0.0"
},
Expand Down
106 changes: 63 additions & 43 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ __metadata:
languageName: node
linkType: hard

"@babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.16.3":
"@babel/runtime@npm:^7.10.2":
version: 7.18.3
resolution: "@babel/runtime@npm:7.18.3"
dependencies:
Expand All @@ -24,6 +24,15 @@ __metadata:
languageName: node
linkType: hard

"@babel/runtime@npm:^7.18.3":
version: 7.18.9
resolution: "@babel/runtime@npm:7.18.9"
dependencies:
regenerator-runtime: ^0.13.4
checksum: 36dd736baba7164e82b3cc9d43e081f0cb2d05ff867ad39cac515d99546cee75b7f782018b02a3dcf5f2ef3d27f319faa68965fdfec49d4912c60c6002353a2e
languageName: node
linkType: hard

"@colors/colors@npm:1.5.0":
version: 1.5.0
resolution: "@colors/colors@npm:1.5.0"
Expand Down Expand Up @@ -157,13 +166,13 @@ __metadata:
languageName: node
linkType: hard

"@types/eslint@npm:^8.4.3":
version: 8.4.3
resolution: "@types/eslint@npm:8.4.3"
"@types/eslint@npm:^8.4.5":
version: 8.4.5
resolution: "@types/eslint@npm:8.4.5"
dependencies:
"@types/estree": "*"
"@types/json-schema": "*"
checksum: cc199be84e22754cc625b171c90852da2b563088d32f4161d310b70470eab47f9bc812774c61eab6530083a214fe634abc32d06ef38e0a5e29f68436331cfabb
checksum: 428b0c971a50adb0d08621e76f21b284580a0052a31341a0e6d553f72b54cd0142d549aa1497c7e3bc56e9f6bcc27286e66e0216e1ba76d1a5ecd2279c40bc8c
languageName: node
linkType: hard

Expand Down Expand Up @@ -385,10 +394,10 @@ __metadata:
languageName: node
linkType: hard

"axe-core@npm:^4.3.5":
version: 4.4.2
resolution: "axe-core@npm:4.4.2"
checksum: 93fbb36c5ac8ab5e67e49678a6f7be0dc799a9f560edd95cca1f0a8183def8c50205972366b9941a3ea2b20224a1fe230e6d87ef38cb6db70472ed1b694febd1
"axe-core@npm:^4.4.2":
version: 4.4.3
resolution: "axe-core@npm:4.4.3"
checksum: c3ea000d9ace3ba0bc747c8feafc24b0de62a0f7d93021d0f77b19c73fca15341843510f6170da563d51535d6cfb7a46c5fc0ea36170549dbb44b170208450a2
languageName: node
linkType: hard

Expand Down Expand Up @@ -737,7 +746,7 @@ __metadata:
languageName: node
linkType: hard

"damerau-levenshtein@npm:^1.0.7":
"damerau-levenshtein@npm:^1.0.8":
version: 1.0.8
resolution: "damerau-levenshtein@npm:1.0.8"
checksum: d240b7757544460ae0586a341a53110ab0a61126570ef2d8c731e3eab3f0cb6e488e2609e6a69b46727635de49be20b071688698744417ff1b6c1d7ccd03e0de
Expand Down Expand Up @@ -826,10 +835,10 @@ __metadata:
languageName: node
linkType: hard

"devtools-protocol@npm:0.0.1001819":
version: 0.0.1001819
resolution: "devtools-protocol@npm:0.0.1001819"
checksum: 156e7c6703ec6c203e0bc1d68393fcd768de45bf225ca7b2d6bd106d8dc4ab0e8f38c518ce158c73d83a96db8ef32ae06dc9b4edd70e94660253dc2622619947
"devtools-protocol@npm:0.0.1011705":
version: 0.0.1011705
resolution: "devtools-protocol@npm:0.0.1011705"
checksum: 2e97d2eda45bbdfd549b3e2fdb441b8803387cacebdb7eb186bd06a24beb65cda116ea0163b6895da2edb7ac85ce8602bb4e961c99849ff3a43eab24fb70b300
languageName: node
linkType: hard

Expand Down Expand Up @@ -1116,25 +1125,26 @@ __metadata:
languageName: node
linkType: hard

"eslint-plugin-jsx-a11y@npm:^6.5.1":
version: 6.5.1
resolution: "eslint-plugin-jsx-a11y@npm:6.5.1"
"eslint-plugin-jsx-a11y@npm:^6.6.0":
version: 6.6.0
resolution: "eslint-plugin-jsx-a11y@npm:6.6.0"
dependencies:
"@babel/runtime": ^7.16.3
"@babel/runtime": ^7.18.3
aria-query: ^4.2.2
array-includes: ^3.1.4
array-includes: ^3.1.5
ast-types-flow: ^0.0.7
axe-core: ^4.3.5
axe-core: ^4.4.2
axobject-query: ^2.2.0
damerau-levenshtein: ^1.0.7
damerau-levenshtein: ^1.0.8
emoji-regex: ^9.2.2
has: ^1.0.3
jsx-ast-utils: ^3.2.1
jsx-ast-utils: ^3.3.1
language-tags: ^1.0.5
minimatch: ^3.0.4
minimatch: ^3.1.2
semver: ^6.3.0
peerDependencies:
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
checksum: 311ab993ed982d0cc7cb0ba02fbc4b36c4a94e9434f31e97f13c4d67e8ecb8aec36baecfd759ff70498846e7e11d7a197eb04c39ad64934baf3354712fd0bc9d
checksum: d9da9a3ec71137c12519289c63e71250d5d78d4b7729b84e7e12edf1aad993083f23303d9b62359591b2f8aababb1bbec032cd84f1425e759b11a055e3acd144
languageName: node
linkType: hard

Expand Down Expand Up @@ -1206,9 +1216,9 @@ __metadata:
languageName: node
linkType: hard

"eslint@npm:^8.18.0":
version: 8.18.0
resolution: "eslint@npm:8.18.0"
"eslint@npm:^8.20.0":
version: 8.20.0
resolution: "eslint@npm:8.20.0"
dependencies:
"@eslint/eslintrc": ^1.3.0
"@humanwhocodes/config-array": ^0.9.2
Expand Down Expand Up @@ -1247,7 +1257,7 @@ __metadata:
v8-compile-cache: ^2.0.3
bin:
eslint: bin/eslint.js
checksum: d9b4b7488a9cee97608343cbb5ac652d3f316436f95ef0800cd9497c1c6f877b655a3275817989c02f1ff0d5dfd1959c5092af9251c7e3fcf60659da37752a10
checksum: a31adf390d71d916925586bc8467b48f620e93dd0416bc1e897d99265af88b48d4eba3985b5ff4653ae5cc46311a360d373574002277e159bb38a4363abf9228
languageName: node
linkType: hard

Expand Down Expand Up @@ -2093,7 +2103,7 @@ __metadata:
languageName: node
linkType: hard

"jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.2.1":
"jsx-ast-utils@npm:^2.4.1 || ^3.0.0":
version: 3.3.0
resolution: "jsx-ast-utils@npm:3.3.0"
dependencies:
Expand All @@ -2103,6 +2113,16 @@ __metadata:
languageName: node
linkType: hard

"jsx-ast-utils@npm:^3.3.1":
version: 3.3.2
resolution: "jsx-ast-utils@npm:3.3.2"
dependencies:
array-includes: ^3.1.5
object.assign: ^4.1.2
checksum: 61d4596d44480afc03ae0a7ebb272aa6603dc4c3645805dea0fc8d9f0693542cd0959f3ba7c0c9b16c13dd5a900c7c4310108bada273132a8355efe3fed22064
languageName: node
linkType: hard

"just-extend@npm:^4.0.2":
version: 4.2.1
resolution: "just-extend@npm:4.2.1"
Expand Down Expand Up @@ -2507,11 +2527,11 @@ __metadata:
version: 0.0.0-use.local
resolution: "ninjawars@workspace:."
dependencies:
"@types/eslint": ^8.4.3
eslint: ^8.18.0
"@types/eslint": ^8.4.5
eslint: ^8.20.0
eslint-config-airbnb: ^19.0.4
eslint-plugin-import: ^2.26.0
eslint-plugin-jsx-a11y: ^6.5.1
eslint-plugin-jsx-a11y: ^6.6.0
eslint-plugin-react: ^7.30.1
eslint-plugin-react-hooks: 4.6.0
husky: ^8.0.1
Expand All @@ -2522,7 +2542,7 @@ __metadata:
karma-requirejs: ^1.1.0
karma-sinon: ^1.0.5
prettier: 2.7.1
puppeteer: ^15.0.0
puppeteer: ^15.4.0
requirejs: ^2.3.6
sinon: ^14.0.0
languageName: unknown
Expand Down Expand Up @@ -2939,13 +2959,13 @@ __metadata:
languageName: node
linkType: hard

"puppeteer@npm:^15.0.0":
version: 15.0.0
resolution: "puppeteer@npm:15.0.0"
"puppeteer@npm:^15.4.0":
version: 15.4.0
resolution: "puppeteer@npm:15.4.0"
dependencies:
cross-fetch: 3.1.5
debug: 4.3.4
devtools-protocol: 0.0.1001819
devtools-protocol: 0.0.1011705
extract-zip: 2.0.1
https-proxy-agent: 5.0.1
pkg-dir: 4.2.0
Expand All @@ -2954,8 +2974,8 @@ __metadata:
rimraf: 3.0.2
tar-fs: 2.1.1
unbzip2-stream: 1.4.3
ws: 8.7.0
checksum: 6c57d2a34239b418d9499875d20b842c8055e51cd02a24d38f7605414ef5ee54a8b0c031711c1edddc0344336ee2eb9db811033e5699cc734d06ec4d03ee39eb
ws: 8.8.0
checksum: 57f05042a58e5b5b6b9457da8b88680a0db170f9a6cd44153a8da03d5888ff0d9fcfc0bb1c4e72e1e3f19cb7707091e883ec5a7d0a2172ee36e29741ab8d7288
languageName: node
linkType: hard

Expand Down Expand Up @@ -3763,9 +3783,9 @@ __metadata:
languageName: node
linkType: hard

"ws@npm:8.7.0":
version: 8.7.0
resolution: "ws@npm:8.7.0"
"ws@npm:8.8.0":
version: 8.8.0
resolution: "ws@npm:8.8.0"
peerDependencies:
bufferutil: ^4.0.1
utf-8-validate: ^5.0.2
Expand All @@ -3774,7 +3794,7 @@ __metadata:
optional: true
utf-8-validate:
optional: true
checksum: 078fa2dbc06b31a45e0057b19e2930d26c222622e355955afe019c9b9b25f62eb2a8eff7cceabdad04910ecd2bd6ef4fa48e6f3673f2fdddff02a6e4c2459584
checksum: 6ceed1ca1cb800ef60c7fc8346c7d5d73d73be754228eb958765abf5d714519338efa20ffe674167039486eb3a813aae5a497f8d319e16b4d96216a31df5bd95
languageName: node
linkType: hard

Expand Down

0 comments on commit aaf493c

Please sign in to comment.