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 19072560e6923057f066c88ac56530eb2028794f parent 546b75b8cb2a38c3469ba1cdda04e0f86c2014ec Auterice: Arthur Pons <arthur.pons@unistra.fr> Date: Sat, 22 Jun 2024 13:04:27 +0200 Ajout cleave, att plusieurs ennemies Implémenté à l'arrache Je pense que c'est vraiment chiant de le faire en ciblant avec fight/ennemies/* ce qui est dommage, j'aurais aimé utiliser les glob pour ça, peut-être un jour Ca pourrait permettre de cibler des ennemies spécifiquement (tous les jaw-worm mais pas le reste) Ce n'est pas dans les règles de sts mais ça pourrait être intéressant En attendant c'est soit on cible un ennemie soit c'est all Début d'implémentation pour les statuts je crois aussi J'aurais du commencer par faire l'ajout de plusieurs monstres dans un combat Diffstat:
A | bdd/cards/cleave | | | 2 | ++ |
M | utils | | | 57 | +++++++++++++++++++++++++++++++++++++-------------------- |
2 files changed, 39 insertions(+), 20 deletions(-)
diff --git a/bdd/cards/cleave b/bdd/cards/cleave @@ -0,0 +1,2 @@ +_cost 1 +_attack 8 1 all diff --git a/utils b/utils @@ -153,8 +153,12 @@ _killennemie() { _changestat() { local target stat value card target="$1";stat="$2";value="$3";card="$4" - curvalue=$(_getstat "$target" "$stat") - _setstat "$target" "$stat" $(( $curvalue $value )) "$card" + [ "$target" = "all" ] && { + target=$(find fight/ennemies -type l);} + echo "$target" | while read t;do + curvalue=$(_getstat "$t" "$stat") + _setstat "$t" "$stat" $(( $curvalue $value )) "$card" + done } # set la valeur absolue @@ -168,7 +172,7 @@ _setstat() { esac fi [ "$stat" = "block" ] && [ "$value" -gt "0" ] && _hasstatus player juggernaut && - _dodamage $(_getremainingstatusturns player juggernaut) fight/ennemies/* player + _dodamage $(_getremainingstatusturns player juggernaut) $(_randomennemy) player echo sed -i --follow-symlinks -E "/^$stat / s/ .*/ $value/" "$target" sed -i --follow-symlinks -E "/^$stat / s/ .*/ $value/" "$target" } @@ -218,13 +222,22 @@ _dodamage() { } _attack() { + local damage times target hitter card + damage="$1";times="$2";target="$3";hitter="$4";card="$5" _hasstatus player rage && _changestat player block "+$(_getremainingstatusturns player rage)" - damage="$1";times="$2";target="$3";hitter="$4";card="$5" - for i in $(seq $times);do - echo _dodamage "$damage" "$target" "$hitter" - _dodamage "$damage" "$target" "$hitter" "$card" - done; + [ "$target" = "all" ] && { + echo "attacking multiple ennemies"; + target=$(find fight/ennemies -type l); + hitter="$5";card="$6";} + echo "$target" | + while read t;do + echo "damaging ennemie $t $times times with $damage damage" + for i in $(seq $times);do + echo _dodamage "$damage" "$t" "$hitter" + _dodamage "$damage" "$t" "$hitter" "$card" + done; + done } _defend() { @@ -299,7 +312,7 @@ _exetherealcard() { endturn() { _exetherealcard - _setstat fight/ennemies/* block 0 + _setstat all block 0 _hasstatus player metallicize && _defend $(_getremainingstatusturns player metallicize) player _execnextmove @@ -369,19 +382,23 @@ _status() { (vulnerable|weak|strength-down) type="debufs";; (*) type="bufs";; esac - if $(_hasstatus "$target" "$stat");then - remturn=$(_getremainingstatusturns "$target" "$stat") - totturns=$(( $nbturns + ${remturn:-0} )) - if [ "$totturns" = "0" ];then - _removestatus "$target" "$stat" + [ "$target" = "all" ] && + target=$(find fight/ennemies -type l) + echo "$target" | while read t;do + if $(_hasstatus "$t" "$stat");then + remturn=$(_getremainingstatusturns "$t" "$stat") + totturns=$(( $nbturns + ${remturn:-0} )) + if [ "$totturns" = "0" ];then + _removestatus "$t" "$stat" + else + echo sed --follow-symlinks -i -E "/^$type/ s/$stat,-?[0-9]+/$stat,$totturns/" "$t" + sed --follow-symlinks -i -E "/^$type/ s/$stat,-?[0-9]+/$stat,$totturns/" "$t" + fi else - echo sed --follow-symlinks -i -E "/^$type/ s/$stat,-?[0-9]+/$stat,$totturns/" "$target" - sed --follow-symlinks -i -E "/^$type/ s/$stat,-?[0-9]+/$stat,$totturns/" "$target" + echo sed --follow-symlinks -i -E "/^$type/ s/$/ $stat,$nbturns/" "$t" + sed --follow-symlinks -i -E "/^$type/ s/$/ $stat,$nbturns/" "$t" fi - else - echo sed --follow-symlinks -i -E "/^$type/ s/$/ $stat,$nbturns/" "$target" - sed --follow-symlinks -i -E "/^$type/ s/$/ $stat,$nbturns/" "$target" - fi + done } _getstatuses() {