====== Bash functions for Healing ====== This function library contains bash shell functions related to improve the [[:characters:hp|Health]] of a player.\\ Though it had been tested with the busybox ash shell, some functions might only work correctly in bash ( or the other way around ). The functions use code from - [[cf_funcs_common_sh]] - [[cf_funcs_requests_sh]] - [[cf_funcs_items_sh]] These [[:client side scripting]] files are suggested to be installed inside the user's "HOME/.crossfire/s/" folder, \\ with a shortcut link cf -> to the **.**[[:client:crossfire]] directory, \\ to do have not much typing to do in the [[:client]]'s commandline. Functions are usually named **_**function(){ ;} , functions named **_ _**function and **_ _ _**function are usually alternatives to the _function. The main function currently is **_check_hp**, which calls **_ _check_hp**, which is not an alternative function for _check_hp here in the code. The function **_heal** applies a parameter to increase hit points, falls back to the HEAL_ITEM variable. \\ The HEAL_ITEM variable can be set to something like ''HEAL_ITEM="rod of heal"'' in calling scripts. 75 lines of code without much explanations... #!/bin/ash [ "$HAVE_FUNCS_HEAL" ] && return 0 # depends : [ "$HAVE_FUNCS_COMMON" ] || . cf_funcs_common.sh [ "$HAVE_FUNCS_REQUESTS" ] || . cf_funcs_requests.sh [ "$HAVE_FUNCS_ITEMS" ] || . cf_funcs_items.sh __check_hp(){ _debug "__check_hp:$*" _log "__check_hp:$*" while :; do unset HP MAXHP _request_stat_hp case $HP in '') :;; *) break 1;; esac sleep 0.1 done if test $MAXHP -le 20; then return 0 elif test $HP -le 100; then test $HP -gt $(( ( MAXHP / 10 ) * 9 )) else test $HP -gt $(( ( MAXHP / 100 ) * 90 )) fi } _heal(){ _debug "_heal:$*" _log "_heal:$*" local lITEM=${*:-"$HEAL_ITEM"} case $lITEM in *rod*|*staff*|*wand*|*horn*|*scroll*) if _check_have_item_in_inventory $lITEM; then unset NROF_ITEM else unset NROF_ITEM return 1 fi ;; *) :;; esac case $lITEM in *rod*|*staff*|*wand*|*horn*) _is 1 1 apply -u $lITEM _is 1 1 apply -a $lITEM _is 1 1 fire 0 _is 1 1 fire_stop ;; *scroll*) _is 1 1 apply $lITEM;; '') :;; *) _is 1 1 invoke $lITEM;; esac } _check_hp(){ _debug "_check_hp:$*" _log "_check_hp:$*" while :; do __check_hp && return 0 _heal _sleep done } HAVE_FUNCS_HEAL=1 ###END###