Une version rudimentaire de Slay The Spire dans le terminal - retour accueil
git clone git://bebou.netlib.re/sts-term
Log | Files | Refs | README |
commit c2dbea250ffd996aefe148bc0493e4a4ef696816 parent df79c8f78dfa08be2c3c8c9fb32d0057e696b239 Auterice: Arthur Pons <arthur.pons@unistra.fr> Date: Thu, 20 Jun 2024 21:24:57 +0200 Ajout force (testé que pour player) Peut-être que gérer les status comme ça c'est nul Il vaudrait peut-être mieux les gérer comme des stats comme les autres Ca éviterait les sed pas possible Diffstat:
A | bdd/cards/inflame | | | 2 | ++ |
M | bdd/characters/ironclad | | | 2 | ++ |
M | bdd/ennemies/jaw-worm | | | 2 | +- |
M | bdd/ennemies/slime | | | 2 | +- |
M | utils | | | 29 | ++++++++++++++++++++++------- |
5 files changed, 28 insertions(+), 9 deletions(-)
diff --git a/bdd/cards/inflame b/bdd/cards/inflame @@ -0,0 +1,2 @@ +_cost 1 +_strenght 2 player diff --git a/bdd/characters/ironclad b/bdd/characters/ironclad @@ -5,3 +5,5 @@ energy 3 deck strike strike strike strike strike defend defend defend defend bash relic burning-blood gold 99 +bufs +debufs diff --git a/bdd/ennemies/jaw-worm b/bdd/ennemies/jaw-worm @@ -1,6 +1,6 @@ health 40 block 0 moves attack,9,1 defend,8 attack,7,1;defend,5 -debufs bufs +debufs diff --git a/bdd/ennemies/slime b/bdd/ennemies/slime @@ -1,5 +1,5 @@ health 25 block 0 moves attack,6,1 defend,6 attack,5,1;defend,4 -debufs bufs +debufs diff --git a/utils b/utils @@ -12,7 +12,7 @@ _getstat() { _makeui() { # Pour savoir combien de fois l'ui est rafraichie # Clairement pas optimal mais drôle - # ffplay -nodisp -autoexit -loglevel panic -f lavfi -i "sine=440:d=0.1" + # #ffplay -nodisp -autoexit -loglevel panic -f lavfi -i "sine=440:d=0.1" [ ! -e "player" ] && printf "No current game\n" currentenergy=$(_getstat player energy) @@ -159,12 +159,14 @@ _gameover() { } _dodamage() { - ffplay -nodisp -autoexit -loglevel panic -i sounds/hit.ogg + #ffplay -nodisp -autoexit -loglevel panic -i sounds/hit.ogg damage="$1";target="$2";hitter="$3" targethealth=$(_getstat "$target" health);targetblock=$(_getstat "$target" block) + _hasstatus "$hitter" strength && str=$(_getremainingstatusturns "$hitter" strength) || str='0' _hasstatus "$hitter" weak && multiplier=0.75 || multiplier=1 _hasstatus "$target" vulnerable && multiplier=$(echo "$multiplier*1.5" | bc -l) - newblock=$(echo "($targetblock - $damage*$multiplier)/1" | bc) + echo "($targetblock - ($damage+$str)*$multiplier)/1" + newblock=$(echo "($targetblock - ($damage+$str)*$multiplier)/1" | bc) # Si la quantité de block qui reste est négative c'est qu'on prend cette # quantité de dégât # On remet le block à 0 @@ -184,7 +186,7 @@ _attack() { } _defend() { - ffplay -nodisp -autoexit -loglevel panic -i sounds/block.ogg + #ffplay -nodisp -autoexit -loglevel panic -i sounds/block.ogg block="$1" target="$2" targetblock=$(_getstat "$target" block) @@ -299,8 +301,8 @@ _status() { nbturns="$2" target="$3" case "$stat" in - ('vulnerable') type="debufs";; - ('*') type="bufs";; + ('vulnerable|weak') type="debufs";; + (*) type="bufs";; esac if $(_hasstatus "$target" "$stat");then remturn=$(_getremainingstatusturns "$target" "$stat") @@ -311,6 +313,7 @@ _status() { sed --follow-symlinks -i -E "/^$type/ s/$stat,[0-9]+/$stat,$totturns/" "$target" fi else + echo sed --follow-symlinks -i -E "/^$type/ s/$/ $stat,$nbturns/" "$target" sed --follow-symlinks -i -E "/^$type/ s/$/ $stat,$nbturns/" "$target" fi } @@ -320,6 +323,7 @@ _getstatuses() { grep -E '^(de)?bufs ' "$target" | cut -f2- | tr ' ' '\n' | + grep -Ev '(strength)' | cut -d',' -f1 } @@ -342,7 +346,7 @@ _hasstatus() { } _getremainingstatusturns() { - target="$1";stat="$2" + local target="$1";stat="$2" grep -Eo " $stat,[0-9]+" "$target" | cut -d',' -f2 } @@ -374,6 +378,17 @@ _execnextmove() { $tmpdir/executablenextmove } +#### +# Cards +#### +# Les fonctions appelées pas les cartes + +_strenght() { + value="$1" + target="$2" + _status strength "$value" "$target" +} + ##### # Interaction #####