Skip to content

Commit 39ea9c0

Browse files
committed
- Fix shadow animations (strike, hit)
- Take over lifes from level 12 to 13 - Don't show level/time info in level 13 and 14 - Leap of faith is ready directly after shadow merge (no waiting for music end) - Fix "runturn" sliding glitch, through right side gate (e.g. level 10) - Jaffar takes a moment longer until engarde (start fight)
1 parent 43684f0 commit 39ea9c0

File tree

10 files changed

+102
-124
lines changed

10 files changed

+102
-124
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ Prince of Persia reimplementation written in HTML5 / JavaScript (MS-DOS version)
3636

3737
## Play on Apple Watch
3838

39-
- Mail/Message
39+
- Mail/Message
4040
- Send mail or message to yourself with body: https://princejs.com
4141
- On Apple Watch open Mail or Message app
4242
- Click included link to open Browser

assets/anims/shadow.json

Lines changed: 45 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545

4646
"bump": [
4747
{ "cmd": 249, "p1": 5 },
48-
{ "cmd": 251, "p1": -4 },
48+
{ "cmd": 251, "p1": -2 },
4949
{ "cmd": 0, "p1": 50 },
5050
{ "cmd": 0, "p1": 51 },
5151
{ "cmd": 0, "p1": 52 },
@@ -129,22 +129,6 @@
129129
{ "cmd": 255, "p1": "running", "p2": 0 }
130130
],
131131

132-
"runjumpdown": [
133-
{ "cmd": 249, "p1": 1 },
134-
{ "cmd": 242, "p1": 1 },
135-
{ "cmd": 0, "p1": 42 },
136-
{ "cmd": 251, "p1": 4 },
137-
{ "cmd": 250, "p1": 11 },
138-
{ "cmd": 0, "p1": 43 },
139-
{ "cmd": 251, "p1": 4 },
140-
{ "cmd": 250, "p1": 3 },
141-
{ "cmd": 0, "p1": 44 },
142-
{ "cmd": 251, "p1": 5 },
143-
{ "cmd": 244 },
144-
{ "cmd": 242, "p1": 1 },
145-
{ "cmd": 255, "p1": "running", "p2": 0 }
146-
],
147-
148132
"turn": [
149133
{ "cmd": 249, "p1": 7 },
150134
{ "cmd": 254 },
@@ -597,9 +581,8 @@
597581
{ "cmd": 251, "p1": 3 },
598582
{ "cmd": 249, "p1": 1 },
599583
{ "cmd": 242, "p1": 0 },
600-
{ "cmd": 0, "p1": 170 },
601-
{ "cmd": 0, "p1": 171 },
602-
{ "cmd": 255, "p1": "engarde", "p2": 12 }
584+
{ "cmd": 0, "p1": 158 },
585+
{ "cmd": 255, "p1": "engarde", "p2": 11 }
603586
],
604587

605588
"advance": [
@@ -632,8 +615,6 @@
632615
],
633616

634617
"strike": [
635-
{ "cmd": 249, "p1": 1 },
636-
{ "cmd": 0, "p1": 168 },
637618
{ "cmd": 249, "p1": 1 },
638619
{ "cmd": 0, "p1": 151 },
639620
{ "cmd": 0, "p1": 152 },
@@ -692,24 +673,6 @@
692673
{ "cmd": 255, "p1": "dropdead", "p2": 9 }
693674
],
694675

695-
"impale": [
696-
{ "cmd": 249, "p1": 1 },
697-
{ "cmd": 244 },
698-
{ "cmd": 251, "p1": 4 },
699-
{ "cmd": 0, "p1": 177 },
700-
{ "cmd": 246 },
701-
{ "cmd": 0, "p1": 177 },
702-
{ "cmd": 255, "p1": "impale", "p2": 5 }
703-
],
704-
705-
"halve": [
706-
{ "cmd": 249, "p1": 1 },
707-
{ "cmd": 0, "p1": 178 },
708-
{ "cmd": 246 },
709-
{ "cmd": 0, "p1": 178 },
710-
{ "cmd": 255, "p1": "halve", "p2": 3 }
711-
],
712-
713676
"turnengarde": [
714677
{ "cmd": 249, "p1": 5 },
715678
{ "cmd": 254 },
@@ -739,6 +702,48 @@
739702
{ "cmd": 255, "p1": "strike", "p2": 5 }
740703
],
741704

705+
"impale": [
706+
{ "cmd": 249, "p1": 1 },
707+
{ "cmd": 244 },
708+
{ "cmd": 251, "p1": 4 },
709+
{ "cmd": 0, "p1": 177 },
710+
{ "cmd": 246 },
711+
{ "cmd": 0, "p1": 177 },
712+
{ "cmd": 255, "p1": "impale", "p2": 5 }
713+
],
714+
715+
"halve": [
716+
{ "cmd": 249, "p1": 1 },
717+
{ "cmd": 0, "p1": 178 },
718+
{ "cmd": 246 },
719+
{ "cmd": 0, "p1": 178 },
720+
{ "cmd": 255, "p1": "halve", "p2": 3 }
721+
],
722+
723+
"falldead": [
724+
{ "cmd": 249, "p1": 5 },
725+
{ "cmd": 0, "p1": 185 },
726+
{ "cmd": 246 },
727+
{ "cmd": 0, "p1": 185 },
728+
{ "cmd": 255, "p1": "falldead", "p2": 3 }
729+
],
730+
731+
"runjumpdown": [
732+
{ "cmd": 249, "p1": 1 },
733+
{ "cmd": 242, "p1": 1 },
734+
{ "cmd": 0, "p1": 42 },
735+
{ "cmd": 251, "p1": 4 },
736+
{ "cmd": 250, "p1": 11 },
737+
{ "cmd": 0, "p1": 43 },
738+
{ "cmd": 251, "p1": 4 },
739+
{ "cmd": 250, "p1": 3 },
740+
{ "cmd": 0, "p1": 44 },
741+
{ "cmd": 251, "p1": 5 },
742+
{ "cmd": 244 },
743+
{ "cmd": 242, "p1": 1 },
744+
{ "cmd": 255, "p1": "running", "p2": 0 }
745+
],
746+
742747
"softlandStandup": [
743748
{ "cmd": 249, "p1": 5 },
744749
{ "cmd": 244 },

package-lock.json

Lines changed: 17 additions & 59 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
},
2525
"homepage": "https://github.com/oklemenz/PrinceJS#readme",
2626
"devDependencies": {
27-
"eslint": "^8.6.0",
27+
"eslint": "^8.7.0",
2828
"eslint-config": "^0.3.0",
2929
"eslint-config-prettier": "^8.3.0",
3030
"http-server": "^14.1.0",

src/Boot.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,15 @@ PrinceJS.SKIP_CUTSCENES = false;
2525
PrinceJS.Init = function () {
2626
PrinceJS.currentLevel = 1;
2727
PrinceJS.maxHealth = 3;
28+
PrinceJS.currentHealth = null;
2829
PrinceJS.minutes = 60;
2930
PrinceJS.startTime = undefined;
3031
PrinceJS.endTime = undefined;
3132
PrinceJS.strength = 100;
3233
PrinceJS.screenWidth = 0;
3334
PrinceJS.shortcut = false;
3435
PrinceJS.danger = null;
36+
PrinceJS.skipShowLevel = false;
3537
};
3638

3739
PrinceJS.Restart = function () {

src/Enemy.js

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -90,11 +90,14 @@ PrinceJS.Enemy.prototype.updateBehaviour = function () {
9090
return;
9191
}
9292
if (this.willStartFight()) {
93-
PrinceJS.Utils.delayed(() => {
94-
if (this.willStartFight()) {
95-
this.startFight = true;
96-
}
97-
}, 500);
93+
PrinceJS.Utils.delayed(
94+
() => {
95+
if (this.willStartFight()) {
96+
this.startFight = true;
97+
}
98+
},
99+
this.baseCharName === "jaffar" ? 2300 : 500
100+
);
98101
}
99102

100103
if (this.refracTimer > 0) {

src/Fighter.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1322,13 +1322,18 @@ PrinceJS.Fighter.prototype.getCharBounds = function () {
13221322
let f = this.game.cache.getFrameData(this.charName).getFrameByName(this.charName + "-" + this.charFrame);
13231323
let x = PrinceJS.Utils.convertX(this.charX + this.charFdx * this.charFace);
13241324
let y = this.charY + this.charFdy - f.height;
1325+
let w = f.width;
1326+
let h = f.height;
13251327
if (this.faceR()) {
13261328
x -= f.width - 5;
13271329
}
13281330
if ((this.charFood && this.faceL()) || (!this.charFood && this.faceR())) {
13291331
x += 1;
13301332
}
1331-
return new Phaser.Rectangle(x, y, f.width, f.height);
1333+
if (["runturn"].includes(this.action)) {
1334+
w += 2;
1335+
}
1336+
return new Phaser.Rectangle(x, y, w, h);
13321337
};
13331338

13341339
PrinceJS.Fighter.prototype.alignToTile = function (tile) {

0 commit comments

Comments
 (0)