Skip to content

Commit 000959b

Browse files
committed
NEW UPDATE! the move selector update is here
other changes: - added a beautiful favicon made by @Compound-codes - healing and recoil moves - 2 new moves to represent the new features - buffed tickle - borders to buttons they look so much better now - buffed all difficulties to adjust with new moves (including wawa HAHA)
1 parent 6d81eac commit 000959b

File tree

5 files changed

+125
-49
lines changed

5 files changed

+125
-49
lines changed

ROADMAP.md

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,27 @@ update plans
33

44
no deadlines bc im inconsistent
55
## Stage 1: battle system (current stage)
6+
All versions before 0.1.1.1 were created before this document
67
#### 0.1.1.1
78
- random factor to move damage
8-
#### 0.1.2
9+
- debug
10+
1.2 was skipped due to 1.3's size
11+
#### 0.1.3
912
- move selector
10-
- healing moves: probably neccesary to add more strategy
11-
#### 0.1.2.1
12-
- healing leech property
13+
- healing & recoil moves
14+
#### 0.1.3.2
15+
- lots more moves
16+
- internal display rework
17+
- color coded buttons
18+
I only consider this minor due to not much change to the actual code, 0.1.3.1 skipped for same reaosn
19+
#### 0.1.3.3
1320
- easier custom difficulties
14-
#### 0.1.3
15-
- recoil moves
16-
- defense
1721
#### 0.1.4
22+
- defense
23+
- something else
24+
#### 0.1.5
25+
- AI revamp
26+
#### 0.1.6
1827
- typings
1928
## Stage 2: ~~Pokemon~~ Partners
2029
no plans yet

index.html

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,48 +3,55 @@
33
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.3/jquery.min.js"></script>
44
<script src="index.js" defer></script>
55
<link rel="stylesheet" href="styles.css">
6+
<link rel="icon" href="pekachu.ico">
7+
<title>Brokemon v0.1.2</title>
68
</head>
79
<body>
810
<h1>Brokemon</h1>
911
<h2>Your HP: <span id="player-hp">100</span></h2>
10-
<h2>Enemy HP: <span id="enemy-hp">140</span></h2>
12+
<h2>Enemy HP: <span id="enemy-hp">160</span></h2>
1113
<div id="info">
12-
<span id="top-bar">| Loading...</span>
14+
<span id="top-bar">| Select your moves.</span>
1315
<br>
1416
<span id="bottom-bar">|</span>
1517
</div>
1618
<div id="actions">
17-
<button id="button-1" onclick="bonk.useMove('player')" disabled="true">Bonk</button>
18-
<button id="button-2" onclick="stronkify.useMove('player')" disabled="true">Stronkify</button>
19-
<button id="button-3" onclick="belittle.useMove('player')" disabled="true">Belittle haha vocab word</button>
20-
<button id="button-4" onclick="tickle.useMove('player')" disabled="true">Tickle</button>
19+
<button class="move" id="button-1" disabled="true"></button>
20+
<button class="move" id="button-2" disabled="true"></button>
21+
<button class="move" id="button-3" disabled="true"></button>
22+
<button class="move" id="button-4" disabled="true"></button>
2123
</div>
22-
<button class="debug" onclick="bonk.useMove('enemy')">bonk.useMove('enemy')</button>
24+
<button class="debug" onclick="bonk.useMove('enemy')">bonk.useMove("enemy")</button>
25+
<button class="debug" onclick="lick.useMove('player')">lick.useMove("player")</button>
2326
<br>
27+
<div id="moveSelector">
28+
<h2>Move Selector</h2>
29+
</div>
30+
<h2>Difficulties</h2>
2431
<div id="difficulties">
2532
<a href="index.html?hp=120&boost=1">
2633
<button class="difficulty" id="d-easy">
2734
Easy
2835
</button>
2936
</a>
3037
<br>
31-
<a href="index.html?hp=150&boost=1.1">
38+
<a href="index.html?hp=160&boost=1.15">
3239
<button class="difficulty" id="d-normal">
3340
Normal
3441
</button>
3542
</a>
3643
<br>
37-
<a href="index.html?hp=170&boost=1.25">
44+
<a href="index.html?hp=190&boost=1.3">
3845
<button class="difficulty" id="d-hard">
3946
Hard
4047
</button>
4148
</a>
4249
<br>
43-
<a href="index.html?hp=200&boost=2">
50+
<a href="index.html?hp=250&boost=2.5">
4451
<img id="wawa" src="https://i1.sndcdn.com/avatars-1utUXjzJDp44NImm-Qy1TUg-t500x500.jpg"></img>
4552
</a>
46-
<span id="warning">warning: glitchy</span>
4753
</div>
4854
<p>You can make your own custom difficulty by changing the URL</p>
4955
<p>Change boost value for enemy attack multiplier and hp value for enemy HP</p>
56+
<p>Devs: Press F7 for debug</p>
5057
</body>

index.js

Lines changed: 79 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,23 @@
11
$(".debug").hide();
22
let playerHp = 100;
3-
let enemyHp = 140;
3+
let enemyHp = 160;
4+
let playerMaxHp = 100;
5+
let enemyMaxHp = 160;
46
let playerExtraDmg = 1;
57
let enemyExtraDmg = 1.1;
6-
let moveNames = []
7-
let isntFirefox = typeof InstallTrigger === 'undefined';
8-
let isntSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window['safari'] || (typeof safari !== 'undefined' && window['safari'].pushNotification));
9-
isntSafari = !isntSafari
10-
11-
if (isntFirefox && isntSafari) {
12-
alert("Please use Firefox/Safari or else the buttons commit die.")
13-
} else if (!isntFirefox) {
14-
console.log("^^ that is because feature checking")
15-
};
8+
let moveNames = [];
9+
let selectableMoves = [];
10+
let movePool = [];
11+
let movesChosen = 1;
12+
let isFirefox = navigator.userAgent.match(/firefox|fxios/i)
13+
let isSafari = navigator.userAgent.match(/safari/i);
14+
15+
if (isFirefox || isSafari) {
16+
console.log("goob job")
17+
} else {
18+
alert("Please use Firefox or Safari or else the buttons do the funny.")
19+
}
20+
1621
console.log("yo hi snooper if somethings red tell me ok? also run playerHp = -2")
1722

1823
let params = window.location.search;
@@ -23,6 +28,7 @@ newHp = Number(newHp)
2328
newDmg = Number(newDmg)
2429
if (newHp) {
2530
enemyHp = newHp;
31+
enemyMaxHp = newHp;
2632
$("#enemy-hp").html(newHp);
2733
} if (newDmg) {
2834
enemyExtraDmg = newDmg;
@@ -33,10 +39,17 @@ $('#button-2').prop("disabled", true);
3339
$('#button-3').prop("disabled", true);
3440
$('#button-4').prop("disabled", true);
3541

42+
function setupAi() {
43+
for (i of Array(4).keys()) {
44+
let sNum = Math.random() * selectableMoves.length;
45+
let sSelected = selectableMoves.splice(Math.floor(sNum), 1)[0]
46+
movePool.push(sSelected);
47+
}
48+
}
49+
3650
function debug(key) {
37-
console.log('run')
3851
if (key.code === "F7") {
39-
console.log('yes');
52+
console.log('opened debug HAXOR :O');
4053
$(".debug").show();
4154
}
4255
}
@@ -67,8 +80,8 @@ function display(top, bottom) {
6780
}
6881

6982
function moveAi() {
70-
let num = Math.random() * moveNames.length;
71-
let selected = moveNames[Math.floor(num)];
83+
let num = Math.random() * movePool.length;
84+
let selected = movePool[Math.floor(num)];
7285
eval(`${selected}.useMove("enemy")`)
7386
}
7487

@@ -103,17 +116,43 @@ function handleWin() {
103116
}
104117
}
105118

119+
function evalUse(name, user) {
120+
eval(`${name}.useMove("${user}")`)
121+
}
122+
106123
class Move {
107-
constructor(name, dmg, target, effect) {
124+
constructor(name, dmg, target, effect, heal, codeName) {
108125
this.name = name;
109126
this.dmg = dmg;
110127
if (target != "$D") {
111128
this.target = target;
112129
this.effect = effect;
113130
}
114-
moveNames.push(name.toLowerCase())
131+
this.heal = heal;
132+
if (heal >= 0) {
133+
this.healType = "heal";
134+
} else {
135+
this.healType = "recoil";
136+
};
137+
this.codeName = codeName;
138+
moveNames.push(codeName);
139+
selectableMoves = [...moveNames]
140+
this.addFunction = `${codeName}.addToMoves()`
141+
this.useFunction = `${codeName}.useMove("player")`
142+
$("#moveSelector").append(`<button class="move" id="add-${codeName}" onclick="${this.addFunction}">${name}</button>`)
115143
}
116144

145+
addToMoves() {
146+
$(`#button-${movesChosen}`).html(this.name);
147+
$(`#button-${movesChosen}`).attr("onclick", `${this.useFunction}`)
148+
movesChosen += 1;
149+
$(`#add-${this.codeName}`).remove();
150+
if (movesChosen === 5) {
151+
$("#moveSelector").remove();
152+
loop1();
153+
}
154+
}
155+
117156
useMove(user) {
118157
switch (user) {
119158
case "player":
@@ -122,18 +161,24 @@ class Move {
122161
randomDamageBoost += 0.9
123162
pDamageDealt *= randomDamageBoost
124163
enemyHp -= pDamageDealt;
164+
playerHp += this.heal * playerExtraDmg;
165+
playerHp = Math.min(playerHp, playerMaxHp);
125166
if (this.target === "user") {
126167
playerExtraDmg += this.effect;
127168
} else if (this.target === "enemy") {
128169
enemyExtraDmg += this.effect;
129170
}
130171

131-
if (this.dmg != 0) {
172+
if (this.dmg != 0 && this.heal >= 0) {
132173
display(`You used ${this.name}!`, `It dealt ${Math.round(pDamageDealt)} damage.`)
133174
} else if (this.target === "user") {
134175
display(`You used ${this.name}!`, `Your attack increased by ${this.effect * 100}%.`)
135176
} else if (this.target === "enemy") {
136177
display(`You used ${this.name}!`, `The opponent's attack decreased by ${this.effect * -100}%.`)
178+
} else if (this.heal > 0) {
179+
display(`You used ${this.name}!`, `It brought your HP back up to ${Math.round(playerHp)}.`)
180+
} else if (this.heal < 0) {
181+
display(`You use ${this.name}!`, `It dealt ${Math.round(pDamageDealt)} damage with ${Math.round(this.heal * playerExtraDmg * -1)} recoil.`)
137182
}
138183
toggleButtons();
139184
setTimeout(loop2, 1500)
@@ -144,18 +189,23 @@ class Move {
144189
eRandomDamageBoost += 0.9
145190
eDamageDealt *= eRandomDamageBoost
146191
playerHp -= eDamageDealt;
192+
enemyHp += this.heal * enemyExtraDmg;
193+
enemyHp = Math.min(enemyHp, enemyMaxHp);
147194
if (this.target === "user") {
148195
enemyExtraDmg += this.effect;
149196
} else if (this.target === "enemy") {
150197
playerExtraDmg += this.effect;
151198
}
152-
153-
if (this.dmg != 0) {
199+
if (this.dmg != 0 && this.heal >= 0) {
154200
display(`The opponent used ${this.name}!`, `It dealt ${Math.round(eDamageDealt)} damage.`)
155201
} else if (this.target === "user") {
156202
display(`The opponent used ${this.name}!`, `The opponent's attack increased by ${this.effect * 100}%.`)
157203
} else if (this.target === "enemy") {
158204
display(`The opponent used used ${this.name}!`, `Your attack decreased by ${this.effect * -100}%.`)
205+
} else if (this.heal > 0) {
206+
display(`The opponent used ${this.name}!`, `It brought its HP back up to ${Math.round(enemyHp)}.`)
207+
} else if (this.heal < 0) {
208+
display(`The opponent used ${this.name}!`, `It dealt ${Math.round(eDamageDealt)} damage with ${Math.round(this.heal * enemyExtraDmg * -1)} recoil.`)
159209
}
160210

161211
break;
@@ -165,11 +215,13 @@ class Move {
165215

166216
}
167217

168-
let bonk = new Move("Bonk", 40, "$D", 0);
169-
let stronkify = new Move("Stronkify", 0, "user", 0.2);
170-
let belittle = new Move("Belittle", 0, "enemy", -0.15);
171-
let tickle = new Move("Tickle", 10, "$D", 0);
172-
// Kalob was a special child
173-
218+
// let name = new Move("name", dmg, effectTarget, effectPower, heal, "codename")
219+
let bonk = new Move("Bonk", 40, "$D", 0, 0, "bonk");
220+
let stronk = new Move("Stronkify", 0, "user", 0.2, 0, "stronk");
221+
let belittle = new Move("Belittle", 0, "enemy", -0.15, 0, "belittle");
222+
let tickle = new Move("Tickle", 10, "enemy", -0.1, 0, "tickle");
223+
let lick = new Move("Lick Wounds", 0, "$D", 0, 30, "lick");
224+
let hyperbonk = new Move("HYPERBONK", 50, "$D", 0, -30, "hyperbonk")
225+
// Kalob was a special child. He belittled people so they could not lick their wounds using a baseball bat to bonk them
174226
document.addEventListener("keydown", debug)
175-
setTimeout(loop1, 1000)
227+
setupAi()

pekachu.ico

4.19 KB
Binary file not shown.

styles.css

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ body {
2222
border-top-right-radius: 0px;
2323
}
2424

25-
button:not(.difficulty) {
26-
border: 0;
25+
button.move {
26+
border: 0.5vw solid;
2727
width: 47.5vw;
2828
height: 50px;
2929
}
@@ -33,17 +33,25 @@ button {
3333
color: black;
3434
}
3535

36-
#button-1 {background-color: rgb(255, 120, 100); }
36+
#button-1 {
37+
background-color: rgb(255, 120, 100);
38+
border-color: rgb(225, 90, 70);
39+
}
3740

3841
#button-2 {
3942
background-color: rgb(100, 120, 255);
43+
border-color: rgb(70, 90, 225);
4044
float: right;
4145
}
4246

43-
#button-3 {background-color: rgb(255, 255, 120); }
47+
#button-3 {
48+
background-color: rgb(255, 255, 120);
49+
border-color: rgb(225, 225, 90)
50+
}
4451

4552
#button-4 {
4653
background-color: rgb(100, 255, 120);
54+
border-color: rgb(70, 225, 90);
4755
float: right;
4856
}
4957

0 commit comments

Comments
 (0)