コード例 #1
0
        /*
         *  ON etc.
         */
        public static string von(State globals)
        {
            string output = string.Empty;

            if (!Database.here(globals, Definitions.LAMP))
            {
                return(actspk(globals.verb));
            }
            else if (globals.limit < 0)
            {
                return(Database.rspeak(184));
            }
            else
            {
                globals.prop[Definitions.LAMP] = 1;
                output += Database.rspeak(39);
                if (globals.wzdark)
                {
                    globals.wzdark = false;
                    output        += Environment.NewLine + Turn.describe(globals);
                }
            }

            return(output);
        }
コード例 #2
0
        /*
         *  POUR
         */
        public static string vpour(State globals)
        {
            if (globals.@object == Definitions.BOTTLE || globals.@object == 0)
            {
                globals.@object = Database.liq(globals);
            }
            if (globals.@object == 0)
            {
                return(needobj(globals));
            }
            if (!Database.toting(globals, globals.@object))
            {
                return(actspk(globals.verb));
            }
            if (globals.@object != Definitions.OIL && globals.@object != Definitions.WATER)
            {
                return(Database.rspeak(78));
            }

            string output = string.Empty;

            globals.prop[Definitions.BOTTLE] = 1;
            globals.place[globals.@object]   = 0;
            if (Database.at(globals, Definitions.PLANT))
            {
                if (globals.@object != Definitions.WATER)
                {
                    output += Database.rspeak(112);
                }
                else
                {
                    output += Database.pspeak(Definitions.PLANT, globals.prop[Definitions.PLANT] + 1);
                    globals.prop[Definitions.PLANT]  = (globals.prop[Definitions.PLANT] + 2) % 6;
                    globals.prop[Definitions.PLANT2] = globals.prop[Definitions.PLANT] / 2;
                    output += Environment.NewLine + Turn.describe(globals);
                }
            }
            else if (Database.at(globals, Definitions.DOOR))
            {
                globals.prop[Definitions.DOOR] = (globals.@object == Definitions.OIL ? 1 : 0);
                output += Database.rspeak(113 + globals.prop[Definitions.DOOR]);
            }
            else
            {
                output += Database.rspeak(77);
            }

            return(output);
        }
コード例 #3
0
        /*
         *  THROW etc.
         */
        public static string vthrow(State globals)
        {
            int msg;
            int i;

            if (Database.toting(globals, Definitions.ROD2) && globals.@object == Definitions.ROD && !Database.toting(globals, Definitions.ROD))
            {
                globals.@object = Definitions.ROD2;
            }
            if (!Database.toting(globals, globals.@object))
            {
                return(actspk(globals.verb));
            }

            /*
             * treasure to troll
             */
            if (Database.at(globals, Definitions.TROLL) && globals.@object >= 50 && globals.@object < Definitions.MAXOBJ)
            {
                Database.drop(globals, globals.@object, 0);
                Database.move(globals, Definitions.TROLL, 0);
                Database.move(globals, (Definitions.TROLL + Definitions.MAXOBJ), 0);
                Database.drop(globals, Definitions.TROLL2, 117);
                Database.drop(globals, (Definitions.TROLL2 + Definitions.MAXOBJ), 122);
                Database.juggle(Definitions.CHASM);
                return(Database.rspeak(159));
            }

            /*
             * feed the bears...
             */
            if (globals.@object == Definitions.FOOD && Database.here(globals, Definitions.BEAR))
            {
                globals.@object = Definitions.BEAR;
                return(vfeed(globals));
            }

            /*
             * if not axe, same as drop...
             */
            if (globals.@object != Definitions.AXE)
            {
                return(vdrop(globals));
            }

            /*
             * AXE is THROWN
             */
            /*
             * at a dwarf...
             */
            if ((i = Database.dcheck(globals)) > 0)
            {
                msg = 48;
                if (Database.pct(33))
                {
                    globals.dseen[i] = false;
                    globals.dloc[i]  = 0;
                    msg = 47;
                    ++globals.dkill;
                    if (globals.dkill == 1)
                    {
                        msg = 149;
                    }
                }
            }

            /*
             * at a dragon...
             */
            else if (Database.at(globals, Definitions.DRAGON) && globals.prop[Definitions.DRAGON] == 0)
            {
                msg = 152;
            }

            /*
             * at the troll...
             */
            else if (Database.at(globals, Definitions.TROLL))
            {
                msg = 158;
            }

            /*
             * at the bear...
             */
            else if (Database.here(globals, Definitions.BEAR) && globals.prop[Definitions.BEAR] == 0)
            {
                Database.drop(globals, Definitions.AXE, globals.loc);
                globals.@fixed[Definitions.AXE] = -1;
                globals.prop[Definitions.AXE]   = 1;
                Database.juggle(Definitions.BEAR);
                return(Database.rspeak(164));
            }

            /*
             * otherwise it is an attack
             */
            else
            {
                globals.verb    = Definitions.KILL;
                globals.@object = 0;
                return(itverb(globals));
            }

            /*
             * handle the left over axe...
             */
            string output = Database.rspeak(msg);

            Database.drop(globals, Definitions.AXE, globals.loc);
            return(Environment.NewLine + Turn.describe(globals));
        }