move flee to correct spot
authorxangelo <git@xangelo.ca>
Tue, 6 Jun 2023 13:58:45 +0000 (09:58 -0400)
committerxangelo <git@xangelo.ca>
Tue, 6 Jun 2023 13:58:45 +0000 (09:58 -0400)
The flee implementation was happening too early in the fight process so
it wasn't able to take into account player/equipment stats or monster
stats.

src/server/api.ts

index 5f9693e23c5f20f8656fd2bc9f92a62943577b33..482a817c08d32ca65c52b7ae343ac160071ca168 100644 (file)
@@ -290,14 +290,6 @@ io.on('connection', async socket => {
         levelIncrease: false
       }
     };
-    if(data.action === 'flee') {
-      roundData.roundDetails.push(`You managed to escape from the ${monster.name}!`)
-      roundData.winner = 'monster';
-      await clearFight(player.id);
-
-      socket.emit('fight-over', {roundData, monsters: []});
-      return;
-    }
     const equippedItems = await getEquippedItems(player.id);
 
     // we only use this if the player successfully defeated the monster 
@@ -346,6 +338,18 @@ io.on('connection', async socket => {
       boost.damage += item.boost_damage;
     });
 
+    // if you flee'd, then we want to check your dex vs. the monsters
+    // but we want to give you the item/weapon boosts you need
+    // if not then you're going to get hit.
+    if(data.action === 'flee') {
+      roundData.roundDetails.push(`You managed to escape from the ${monster.name}!`)
+      roundData.winner = 'monster';
+      await clearFight(player.id);
+
+      socket.emit('fight-over', {roundData, monsters: []});
+      return;
+    }
+
     const primaryStat = data.action === 'attack' ? player.strength : player.constitution;
     const boostStat = data.action === 'attack' ? boost.strength : boost.constitution;
     const attackType = data.action === 'attack' ? 'physical' : 'magical';