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 37b93c0c77d1636917d02eec6d21c314adef4727 parent c17565d543be9619ddb5e4889eb60e8e862780b1 Auterice: Arthur Pons <arthur.pons@unistra.fr> Date: Sun, 23 Jun 2024 18:51:45 +0200 Implémentation innate c'est pas de la tarte et c'est moche Je me suis cassé les dents sur un bug obscure où parfois la partie se lançait correctement, parfois non totalement aléatoirement Eh bien c'est parce qu'effectivement c'était aléatoire. J'avais le fichier bdd/characters/ironclad ouvert dans vim et donc une fois sur deux environ le programme choisissait de construire un "player" depuis le fichier swp. Evidemment ça ne marchait pas. Diffstat:
M | utils | | | 30 | +++++++++++++++++++++--------- |
1 file changed, 21 insertions(+), 9 deletions(-)
diff --git a/utils b/utils @@ -8,6 +8,7 @@ alias skill=":" alias status=":" alias curse=":" alias ethereal=":" +alias innate=":" _getstat() { local target stat @@ -147,7 +148,15 @@ _makefight() { ln -rs -f player fight/player _setstat fight/player block 0 - _newhand + grep -EH "^innate" deck/* | + cut -d: -f1 | + while read card;do + echo "drawing innate $(basename $card)" + _draw 1 "$(basename $card)" + done + remcards="$(( 5 - $(find fight/hand -type f | wc -l) ))" + echo _draw "$remcards" + _draw "$remcards" _setstat fight/player energy 3 _createnextmoves _refreshUI @@ -176,15 +185,14 @@ _dupcard() { } _addcard() { - howmuch="$1" - name="$2" - dest="${3:-deck}" + local howmuch name dest nbcard location + howmuch="$1";name="$2";dest="${3:-deck}" nbcard=$(find deck -name "$2-*" | wc -l) location=$(find bdd/cards -type f -name "$name") for i in $(seq $(( $nbcard + 1 )) $(( $nbcard + $howmuch )));do echo "adding card $name nb $i in $dest" if [ "$name" = "wounds" ];then - cp bdd/cards/$name $dest/$name-$i + cp bdd/cards/statuses/$name $dest/$name-$i else <<-. cat > $tmpdir/A . ./utils @@ -440,12 +448,14 @@ endturn() { } _draw() { - local card + local nbtodraw card _hasstatus player no-draw && return 0 - nbtodraw="$1" + nbtodraw="$1";innatecard="$2" for nb in $(seq "$nbtodraw");do [ "$(find fight/stack -type f | wc -l)" = "0" ] && _shufflediscard - card=$(find fight/stack -type f | shuf | head -n 1) + [ -z "$innatecard" ] \ + && card=$(find fight/stack -type f | shuf | head -n 1) \ + || card="fight/stack/$innatecard" chmod +x "$card" cardtype=$(sed -n '2 p' "$card") echo mv "$card" fight/hand of type $cardtype @@ -459,11 +469,13 @@ _draw() { } _newhand() { + local nb + nb="${1:-5}" find fight/hand -type f | while read card;do _discard "$card" done - _draw 5 + _draw $nb } _discard() {