Annotation of 43BSDTahoe/games/hack/hack.wield.c, revision 1.1

1.1     ! root        1: /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
        !             2: /* hack.wield.c - version 1.0.3 */
        !             3: 
        !             4: #include       "hack.h"
        !             5: extern struct obj zeroobj;
        !             6: 
        !             7: setuwep(obj) register struct obj *obj; {
        !             8:        setworn(obj, W_WEP);
        !             9: }
        !            10: 
        !            11: dowield()
        !            12: {
        !            13:        register struct obj *wep;
        !            14:        register int res = 0;
        !            15: 
        !            16:        multi = 0;
        !            17:        if(!(wep = getobj("#-)", "wield"))) /* nothing */;
        !            18:        else if(uwep == wep)
        !            19:                pline("You are already wielding that!");
        !            20:        else if(uwep && uwep->cursed)
        !            21:                pline("The %s welded to your hand!",
        !            22:                        aobjnam(uwep, "are"));
        !            23:        else if(wep == &zeroobj) {
        !            24:                if(uwep == 0){
        !            25:                        pline("You are already empty handed.");
        !            26:                } else {
        !            27:                        setuwep((struct obj *) 0);
        !            28:                        res++;
        !            29:                        pline("You are empty handed.");
        !            30:                }
        !            31:        } else if(uarms && wep->otyp == TWO_HANDED_SWORD)
        !            32:        pline("You cannot wield a two-handed sword and wear a shield.");
        !            33:        else if(wep->owornmask & (W_ARMOR | W_RING))
        !            34:                pline("You cannot wield that!");
        !            35:        else {
        !            36:                setuwep(wep);
        !            37:                res++;
        !            38:                if(uwep->cursed)
        !            39:                    pline("The %s %s to your hand!",
        !            40:                        aobjnam(uwep, "weld"),
        !            41:                        (uwep->quan == 1) ? "itself" : "themselves"); /* a3 */
        !            42:                else prinv(uwep);
        !            43:        }
        !            44:        return(res);
        !            45: }
        !            46: 
        !            47: corrode_weapon(){
        !            48:        if(!uwep || uwep->olet != WEAPON_SYM) return;   /* %% */
        !            49:        if(uwep->rustfree)
        !            50:                pline("Your %s not affected.", aobjnam(uwep, "are"));
        !            51:        else {
        !            52:                pline("Your %s!", aobjnam(uwep, "corrode"));
        !            53:                uwep->spe--;
        !            54:        }
        !            55: }
        !            56: 
        !            57: chwepon(otmp,amount)
        !            58: register struct obj *otmp;
        !            59: register amount;
        !            60: {
        !            61: register char *color = (amount < 0) ? "black" : "green";
        !            62: register char *time;
        !            63:        if(!uwep || uwep->olet != WEAPON_SYM) {
        !            64:                strange_feeling(otmp,
        !            65:                        (amount > 0) ? "Your hands twitch."
        !            66:                                     : "Your hands itch.");
        !            67:                return(0);
        !            68:        }
        !            69: 
        !            70:        if(uwep->otyp == WORM_TOOTH && amount > 0) {
        !            71:                uwep->otyp = CRYSKNIFE;
        !            72:                pline("Your weapon seems sharper now.");
        !            73:                uwep->cursed = 0;
        !            74:                return(1);
        !            75:        }
        !            76: 
        !            77:        if(uwep->otyp == CRYSKNIFE && amount < 0) {
        !            78:                uwep->otyp = WORM_TOOTH;
        !            79:                pline("Your weapon looks duller now.");
        !            80:                return(1);
        !            81:        }
        !            82: 
        !            83:        /* there is a (soft) upper limit to uwep->spe */
        !            84:        if(amount > 0 && uwep->spe > 5 && rn2(3)) {
        !            85:            pline("Your %s violently green for a while and then evaporate%s.",
        !            86:                aobjnam(uwep, "glow"), plur(uwep->quan));
        !            87:            while(uwep)         /* let all of them disappear */
        !            88:                                /* note: uwep->quan = 1 is nogood if unpaid */
        !            89:                useup(uwep);
        !            90:            return(1);
        !            91:        }
        !            92:        if(!rn2(6)) amount *= 2;
        !            93:        time = (amount*amount == 1) ? "moment" : "while";
        !            94:        pline("Your %s %s for a %s.",
        !            95:                aobjnam(uwep, "glow"), color, time);
        !            96:        uwep->spe += amount;
        !            97:        if(amount > 0) uwep->cursed = 0;
        !            98:        return(1);
        !            99: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.