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, "")
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" )
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, "" )
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")
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")
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] )
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" )
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])
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")
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" )
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, "" )
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" )
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 + "!!!!" )
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, "")
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")
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")
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
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, "")
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, "" )
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" )
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 + "!!!!")
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, "")
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, "" )
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" )