Exemplo n.º 1
0
    def Run(self, args):
        if not args: raise PythonCommand.UsageError
        me = BetterMUD.character(self.me)
        r = BetterMUD.room(me.Room())

        quantity = 0
        item = args

        if string.digits.find(args[0]) != -1:
            # first letter is a digit, so get quantity
            split = args.split(None, 1)
            try:
                quantity = int(split[0])
                item = split[1]
            except:
                # do nothing
                pass

        i = BetterMUD.item(
            FindTarget(r.SeekItem, r.IsValidItem, r.CurrentItem, item))
        if i.IsQuantity() and quantity == 0:
            quantity = i.GetQuantity()

        self.mud.DoAction("attemptgetitem", me.ID(), r.CurrentItem(), quantity,
                          0, "")
Exemplo n.º 2
0
    def Run( self, args ):
        if not args: raise PythonCommand.UsageError

        me = BetterMUD.character( self.me )
        r = BetterMUD.room( me.Room() )
        m = BetterMUD.character( FindTarget( r.SeekCharacter, r.IsValidCharacter, r.CurrentCharacter, args ) )
        m.DoAction( "do", 0, 0, me.ID(), 0, "list" )
Exemplo n.º 3
0
    def Run( self, args ):
        if not args: raise PythonCommand.UsageError
        parms = args.split( None, 1 )
        if len(parms) < 2: raise PythonCommand.UsageError

        me = BetterMUD.character( self.me )
        r = BetterMUD.room( me.Room() )


        recipient = FindTarget( r.SeekCharacter, r.IsValidCharacter, r.CurrentCharacter, parms[0] )
        if recipient == me.ID():
            me.DoAction( "error", 0, 0, 0, 0, "You can't give yourself an object!" )
            return

        quantity = 0
        item = parms[1]

        if string.digits.find( parms[1][0] ) != -1:
            # first letter is a digit, so get quantity
            split = parms[1].split( None, 1 )
            try:
                quantity = int( split[0] )
                item = split[1]
            except:
                # do nothing
                pass

        i = BetterMUD.item( FindTarget( me.SeekItem, me.IsValidItem, me.CurrentItem, item ) )

        # if user didn't specify the quantity of a quantity item,
        # just get the entire amount.
        if i.IsQuantity() and quantity == 0:
            quantity = i.GetQuantity()

        self.mud.DoAction( "attemptgiveitem", me.ID(), r.CurrentCharacter(), me.CurrentItem(), quantity, "" )
Exemplo n.º 4
0
    def Run(self, args):
        if not args: raise PythonCommand.UsageError

        me = BetterMUD.character(self.me)
        r = BetterMUD.room(me.Room())

        time = self.mud.GetTime()
        if time < self.executiontime:
            me.DoAction(
                "error", 0, 0, 0, 0, "You need to wait " + str(
                    (self.executiontime - time) / 1000) +
                " more seconds to use this again!")
            return

        id = FindTarget(r.SeekItem, r.IsValidItem, r.CurrentItem, args)
        item = BetterMUD.item(id)
        name = item.Name()

        # add 120 seconds; 2 minutes
        self.executiontime = time + 120000

        self.mud.AddActionAbsolute(0, "addlogic", 1, id, 0, 0, "uberweight")
        self.mud.AddActionAbsolute(
            0, "vision", r.ID(), 0, 0, 0,
            "<#FF0000>" + me.Name() + " just cast UBERWEIGHT on " + name + "!")
        self.mud.AddActionRelative(20000, "messagelogic", 1, id, 0, 0,
                                   "uberweight remove")
Exemplo n.º 5
0
    def Run(self, args):
        if not args: raise PythonCommand.UsageError

        me = BetterMUD.character(self.me)
        r = BetterMUD.room(me.Room())
        m = BetterMUD.character(
            FindTarget(r.SeekCharacter, r.IsValidCharacter, r.CurrentCharacter,
                       args))
        m.DoAction("do", 0, 0, me.ID(), 0, "list")
Exemplo n.º 6
0
    def Run( self, args ):
        if not args: raise PythonCommand.UsageError
        parms = args.split( None, 1 )
        if len( parms ) < 2: raise PythonCommand.UsageError

        me = BetterMUD.character( self.me )
        r = BetterMUD.room( me.Room() )

        m = BetterMUD.character( FindTarget( r.SeekCharacter, r.IsValidCharacter, r.CurrentCharacter, parms[0] ) )
        m.DoAction( "do", 0, 0, me.ID(), 0, "buy " + parms[1] )
Exemplo n.º 7
0
    def Run( self, args ):
        if not args: raise PythonCommand.UsageError

        me = BetterMUD.character( self.me )
        r = BetterMUD.room( me.Room() )

        t = FindTarget( r.SeekCharacter, r.IsValidCharacter, r.CurrentCharacter, args )
        target = BetterMUD.character( t )
        if not target.DoAction( "query", me.ID(), 0, 0, 0, "canattack" ):
            return

        me.DoAction( "do", 0, 0, t, 0, "initattack" )
Exemplo n.º 8
0
    def Run(self, args):
        if not args: raise PythonCommand.UsageError
        parms = args.split(None, 1)
        if len(parms) < 2: raise PythonCommand.UsageError

        me = BetterMUD.character(self.me)
        r = BetterMUD.room(me.Room())

        m = BetterMUD.character(
            FindTarget(r.SeekCharacter, r.IsValidCharacter, r.CurrentCharacter,
                       parms[0]))
        m.DoAction("do", 0, 0, me.ID(), 0, "buy " + parms[1])
Exemplo n.º 9
0
    def Run(self, args):
        if not args: raise PythonCommand.UsageError

        me = BetterMUD.character(self.me)
        r = BetterMUD.room(me.Room())

        t = FindTarget(r.SeekCharacter, r.IsValidCharacter, r.CurrentCharacter,
                       args)
        target = BetterMUD.character(t)
        if not target.DoAction("query", me.ID(), 0, 0, 0, "canattack"):
            return

        me.DoAction("do", 0, 0, t, 0, "initattack")
Exemplo n.º 10
0
    def Run( self, args ):
        if not args: raise PythonCommand.UsageError

        me = BetterMUD.character( self.me )
        r = BetterMUD.room( me.Room() )

        # find the name:
        id = FindTarget( r.SeekCharacter, r.IsValidCharacter, r.CurrentCharacter, args )
        c = BetterMUD.character( id )
        name = c.Name()

        self.mud.AddActionAbsolute( 0, "addlogic", 0, id, 0, 0, "superglue" )
        self.mud.AddActionAbsolute( 0, "vision", r.ID(), 0, 0, 0, "<#FF0000>OMG!!! " + me.Name() + " just SUPERGLUED " + name + " to the floor!!!!!" )
        self.mud.AddActionRelative( 20000, "messagelogic", 0, id, 0, 0, "superglue remove" )
Exemplo n.º 11
0
    def Run( self, args ):
        if not args: raise PythonCommand.UsageError

        me = BetterMUD.character( self.me )
        room = BetterMUD.room( me.Room() )
        room.SeekCharacter( args )
        if room.IsValidCharacter():
            character = room.CurrentCharacter()
        else:
            me.DoAction( "error", 0, 0, 0, 0, "Cannot find character: " + args )
            return

        c = BetterMUD.character( character )
        me.DoAction( "announce", 0, 0, 0, 0, "Destroying Character: " + c.Name() )
        self.mud.AddActionAbsolute( 0, "destroycharacter", character, 0, 0, 0, "" )
Exemplo n.º 12
0
    def Run( self, args ):
        if not args: raise PythonCommand.UsageError

        me = BetterMUD.character( self.me )
        r = BetterMUD.room( me.Room() )

        try:
            item = BetterMUD.item( FindTarget( me.SeekItem, me.IsValidItem, me.CurrentItem, args ) )
        except:
            item = BetterMUD.item( FindTarget( r.SeekItem, r.IsValidItem, r.CurrentItem, args ) )

        if not item.DoAction( "query", 0, 0, 0, 0, "canread" ):
            me.DoAction( "error", 0, 0, 0, 0, "Cannot read " + item.Name() + "!" )
            return

        item.DoAction( "do", 0, 0, me.ID(), 0, "read" )
Exemplo n.º 13
0
    def Run( self, args ):
        me = BetterMUD.character( self.me )
        r = BetterMUD.room( me.Room() )

        # find the name:
        if not args:
            name = "himself"
        else:
            r.SeekCharacter( args )
            if not r.IsValidCharacter():
                me.DoAction( "error", 0, 0, 0, 0, "Cannot find character: " + args )
                return
            id = r.CurrentCharacter()
            c = BetterMUD.character( id )
            name = c.Name()

        self.mud.AddActionAbsolute( 0, "vision", r.ID(), 0, 0, 0, "<#00FF00>OMG!!! " + me.Name() + " just threw a huge <#FFFF00>CUSTARD PIE<#00FF00> at " + name + "!!!!" )
Exemplo n.º 14
0
    def Run(self, args):
        if not args: raise PythonCommand.UsageError

        me = BetterMUD.character(self.me)
        room = BetterMUD.room(me.Room())
        room.SeekCharacter(args)
        if room.IsValidCharacter():
            character = room.CurrentCharacter()
        else:
            me.DoAction("error", 0, 0, 0, 0, "Cannot find character: " + args)
            return

        c = BetterMUD.character(character)
        me.DoAction("announce", 0, 0, 0, 0,
                    "Destroying Character: " + c.Name())
        self.mud.AddActionAbsolute(0, "destroycharacter", character, 0, 0, 0,
                                   "")
Exemplo n.º 15
0
    def Run(self, args):
        if not args: raise PythonCommand.UsageError

        me = BetterMUD.character(self.me)
        r = BetterMUD.room(me.Room())

        # find the name:
        id = FindTarget(r.SeekCharacter, r.IsValidCharacter,
                        r.CurrentCharacter, args)
        c = BetterMUD.character(id)
        name = c.Name()

        self.mud.AddActionAbsolute(0, "addlogic", 0, id, 0, 0, "superglue")
        self.mud.AddActionAbsolute(
            0, "vision", r.ID(), 0, 0, 0, "<#FF0000>OMG!!! " + me.Name() +
            " just SUPERGLUED " + name + " to the floor!!!!!")
        self.mud.AddActionRelative(20000, "messagelogic", 0, id, 0, 0,
                                   "superglue remove")
Exemplo n.º 16
0
    def Run(self, args):
        if not args: raise PythonCommand.UsageError

        me = BetterMUD.character(self.me)
        r = BetterMUD.room(me.Room())

        try:
            item = BetterMUD.item(
                FindTarget(me.SeekItem, me.IsValidItem, me.CurrentItem, args))
        except:
            item = BetterMUD.item(
                FindTarget(r.SeekItem, r.IsValidItem, r.CurrentItem, args))

        if not item.DoAction("query", 0, 0, 0, 0, "canread"):
            me.DoAction("error", 0, 0, 0, 0,
                        "Cannot read " + item.Name() + "!")
            return

        item.DoAction("do", 0, 0, me.ID(), 0, "read")
Exemplo n.º 17
0
    def Run( self, action, arg1, arg2, arg3, arg4, data ):
        me = BetterMUD.character( self.me )

        # Attack anyone who enters the room
        if action == "enterroom":
            if arg1 != self.me:
                self.mud.AddActionAbsolute( 0, "do", 0, me.ID(), arg1, 0, "initattack" )
            return


        # you killed someone find another target!
        if action == "do" and data == "killed":
            r = BetterMUD.room( me.Room() )
            r.BeginCharacter()
            while r.IsValidCharacter():
                if r.CurrentCharacter() != arg3:    # make sure you don't re-attack the character you just killed!
                    self.mud.AddActionAbsolute( 0, "do", 0, me.ID(), r.CurrentCharacter(), 0, "initattack" )
                    return
                r.NextCharacter()
            return
Exemplo n.º 18
0
    def Run(self, args):
        if not args: raise PythonCommand.UsageError

        me = BetterMUD.character(self.me)
        me.SeekItem(args)

        if me.IsValidItem():
            item = me.CurrentItem()
        else:
            room = BetterMUD.room(me.Room())
            room.SeekItem(args)
            if room.IsValidItem():
                item = room.CurrentItem()
            else:
                me.DoAction("error", 0, 0, 0, 0, "Cannot find item: " + args)
                return

        i = BetterMUD.item(item)
        me.DoAction("announce", 0, 0, 0, 0, "Destroying Item: " + i.Name())
        self.mud.AddActionAbsolute(0, "destroyitem", item, 0, 0, 0, "")
Exemplo n.º 19
0
    def Run( self, args ):
        if not args: raise PythonCommand.UsageError

        me = BetterMUD.character( self.me )
        me.SeekItem( args )

        if me.IsValidItem():
            item = me.CurrentItem()
        else:
            room = BetterMUD.room( me.Room() )
            room.SeekItem( args )
            if room.IsValidItem():
                item = room.CurrentItem()
            else:
                me.DoAction( "error", 0, 0, 0, 0, "Cannot find item: " + args )
                return

        i = BetterMUD.item( item )
        me.DoAction( "announce", 0, 0, 0, 0, "Destroying Item: " + i.Name() )
        self.mud.AddActionAbsolute( 0, "destroyitem", item, 0, 0, 0, "" )
Exemplo n.º 20
0
    def Run( self, args ):
        if not args: raise PythonCommand.UsageError

        me = BetterMUD.character( self.me )
        r = BetterMUD.room( me.Room() )

        time = self.mud.GetTime()
        if time < self.executiontime:
            me.DoAction( "error", 0, 0, 0, 0, "You need to wait " + str( (self.executiontime - time) / 1000 ) + " more seconds to use this again!" )
            return

        id = FindTarget( r.SeekItem, r.IsValidItem, r.CurrentItem, args )
        item = BetterMUD.item( id )
        name = item.Name()

        # add 120 seconds; 2 minutes
        self.executiontime = time + 120000

        self.mud.AddActionAbsolute( 0, "addlogic", 1, id, 0, 0, "uberweight" )
        self.mud.AddActionAbsolute( 0, "vision", r.ID(), 0, 0, 0, "<#FF0000>" + me.Name() + " just cast UBERWEIGHT on " + name + "!" )
        self.mud.AddActionRelative( 20000, "messagelogic", 1, id, 0, 0, "uberweight remove" )
Exemplo n.º 21
0
    def Run(self, args):
        me = BetterMUD.character(self.me)
        r = BetterMUD.room(me.Room())

        # find the name:
        if not args:
            name = "himself"
        else:
            r.SeekCharacter(args)
            if not r.IsValidCharacter():
                me.DoAction("error", 0, 0, 0, 0,
                            "Cannot find character: " + args)
                return
            id = r.CurrentCharacter()
            c = BetterMUD.character(id)
            name = c.Name()

        self.mud.AddActionAbsolute(
            0, "vision", r.ID(), 0, 0, 0, "<#00FF00>OMG!!! " + me.Name() +
            " just threw a huge <#FFFF00>CUSTARD PIE<#00FF00> at " + name +
            "!!!!")
Exemplo n.º 22
0
    def Run(self, args):
        if not args: raise PythonCommand.UsageError
        parms = args.split(None, 1)
        if len(parms) < 2: raise PythonCommand.UsageError

        me = BetterMUD.character(self.me)
        r = BetterMUD.room(me.Room())

        recipient = FindTarget(r.SeekCharacter, r.IsValidCharacter,
                               r.CurrentCharacter, parms[0])
        if recipient == me.ID():
            me.DoAction("error", 0, 0, 0, 0,
                        "You can't give yourself an object!")
            return

        quantity = 0
        item = parms[1]

        if string.digits.find(parms[1][0]) != -1:
            # first letter is a digit, so get quantity
            split = parms[1].split(None, 1)
            try:
                quantity = int(split[0])
                item = split[1]
            except:
                # do nothing
                pass

        i = BetterMUD.item(
            FindTarget(me.SeekItem, me.IsValidItem, me.CurrentItem, item))

        # if user didn't specify the quantity of a quantity item,
        # just get the entire amount.
        if i.IsQuantity() and quantity == 0:
            quantity = i.GetQuantity()

        self.mud.DoAction("attemptgiveitem", me.ID(), r.CurrentCharacter(),
                          me.CurrentItem(), quantity, "")
Exemplo n.º 23
0
    def Run( self, args ):
        if not args: raise PythonCommand.UsageError
        me = BetterMUD.character( self.me )
        r = BetterMUD.room( me.Room() )

        quantity = 0
        item = args

        if string.digits.find( args[0] ) != -1:
            # first letter is a digit, so get quantity
            split = args.split( None, 1 )
            try:
                quantity = int( split[0] )
                item = split[1]
            except:
                # do nothing
                pass

        i = BetterMUD.item( FindTarget( r.SeekItem, r.IsValidItem, r.CurrentItem, item ) )
        if i.IsQuantity() and quantity == 0:
            quantity = i.GetQuantity()

        self.mud.DoAction( "attemptgetitem", me.ID(), r.CurrentItem(), quantity, 0, "" )
Exemplo n.º 24
0
    def Run( self, action, arg1, arg2, arg3, arg4, data ):
        me = BetterMUD.character( self.me )


        if action == "modifyattribute" and data == "experience":
            me.DoAction( "announce", 0, 0, 0, 0, "<#00FFFF>You gain " + str( arg4 ) + " experience!" )
            return

        # check for death
        if action == "modifyattribute" and data == "hitpoints":
            if arg3 <= 0:
                me.DoAction( "do", 0, 0, 0, 0, "died" )
            return

        # you killed someone... celebrate!
        if action == "do" and data == "killed":
            self.Break( me )
            return

        if action == "do" and data == "died":
            self.Break( me )
            self.mud.AddActionAbsolute( 0, "vision", me.Room(), 0, 0, 0, me.Name() + " dies!!!" )

            # calculate how much experience to give to everyone attacking you
            experience = me.GetAttribute( "giveexperience" )
            if len( self.attackedlist ) > 0:
                experience = experience / len( self.attackedlist )

            # go through everyone, tell them you died, and give them their experience

            for x in self.attackedlist[:]:
                c = BetterMUD.character( x )
                c.DoAction( "do", 0, 0, self.me, 0, "killed" )
                self.mud.DoAction( "modifyattribute", 0, x, c.GetAttribute( "experience" ) + experience, experience, "experience" )

            # clear the list
            self.attackedlist = []

            # go through all his items and force them to drop
            me.BeginItem()
            while me.IsValidItem():
                self.mud.DoAction( "dropitem", me.ID(), me.CurrentItem(), 0, 0, "" )
                me.NextItem()

            # now figure out how to kill the character
            if not me.IsPlayer():
                # just destroy non-players
                self.mud.AddActionAbsolute( 0, "destroycharacter", self.me, 0, 0, 0, "" )
            else:
                # give the player some hitpoints back
                me.SetAttribute( "hitpoints", (me.GetAttribute( "maxhitpoints" ) / 10) * 7 )

                # now spawn the player somewhere, checking the current room, current region, current character,
                # and finally giving up and sending the player to room 1.
                r = BetterMUD.room( me.Room() )
                if r.DoAction( "do", me.ID(), 0, 0, 0, "deathtransport" ):
                    return
                r = BetterMUD.region( me.Region() )
                if r.DoAction( "do", me.ID(), 0, 0, 0, "deathtransport" ):
                    return
                if me.DoAction( "do", me.ID(), 0, 0, 0, "deathtransport" ):
                    return
                self.mud.DoAction( "forcetransport", me.ID(), 1, 0, 0, "" )
            return


        # reset hp if maxhp goes down below hp.
        if action == "modifyattribute" and data == "maxhitpoints":
            if me.GetAttribute( "hitpoints" ) > me.GetAttribute( "maxhitpoints" ):
                me.SetAttribute( "hitpoints", me.GetAttribute( "maxhitpoints" ) )
            return

        # people with the combat module can be attacked
        if action == "query" and data == "canattack":
            return 1


        # add character to attacked list if he isn't there
        if action == "do" and data == "attacked":
            try:
                self.attackedlist.index( arg3 )
            except:
                self.attackedlist.append( arg3 )
            return

        # remove character from attacked list
        if action == "do" and data == "brokeattack":
            try:
                self.attackedlist.remove( arg3 )
            except:
                pass
            return


        # initiate an attack
        if action == "do" and data == "initattack":
            if arg3 == self.me: return

            # clear the old target if attacking someone else
            if self.target != 0:
                t = BetterMUD.character( self.target )
                t.DoAction( "do", 0, 0, self.me, 0, "brokeattack" )
            else:
                self.mud.AddActionRelative( 0, "do", 0, self.me, 0, 0, "attack" )

            # set the new target and tell him he's been attacked
            self.target = arg3
            t = BetterMUD.character( arg3 )
            t.DoAction( "do", 0, 0, self.me, 0, "attacked" )
            self.mud.AddActionAbsolute( 0, "vision", me.Room(), 0, 0, 0, me.Name() + " begins attacking " + t.Name() + "!!" )
            return


        # clear the old target if attacking someone else
        if action == "do" and data == "breakattack":
            self.Break( me )
            return

        # break if target or you leaves room
        if action == "leaveroom":
            if arg1 == self.target or arg1 == self.me:
                self.Break( me )
            return

        if action == "do" and data == "attack":

            # get the target
            target = BetterMUD.character( self.target )

            # set another attack round
            self.mud.AddActionRelative( self.attacktime, "do", 0, self.me, 0, 0, "attack" )

            # get the weapon
            if me.GetAttribute( "weapon" ) == 0:
                weapon = BetterMUD.itemtemplate( me.GetAttribute( "defaultweapon" ) )
            else:
                weapon = BetterMUD.item( me.GetAttribute( "weapon" ) )

            # calculate the accuracy
            accuracy = weapon.GetAttribute( "accuracy" )
            accuracy += target.DoAction( "query", me.ID(), target.ID(), 0, 0, "getaccuracydelta" )
            accuracy += me.DoAction( "query", me.ID(), target.ID(), 0, 0, "getaccuracydelta" )

            # see if you hit him
            if accuracy <= random.randint( 0, 99 ):
                self.mud.AddActionAbsolute( 0, "vision", me.Room(), 0, 0, 0, me.Name() + " swings at " + target.Name() + " with " + weapon.Name() + ", but misses!" )
                return

            # calculate damage and hit
            damage = random.randint( weapon.GetAttribute( "mindamage" ), weapon.GetAttribute( "maxdamage" ) )
            self.mud.DoAction( "vision", me.Room(), 0, 0, 0, "<#FF0000>" + me.Name() + " hits " + target.Name() + " with " + weapon.Name() + " for " + str( damage ) + " damage!" )
            self.mud.DoAction( "modifyattribute", 0, target.ID(), target.GetAttribute( "hitpoints" ) - damage, damage, "hitpoints" )