def CmdGimme(mob,args):
    from item import ItemProto,getTomeAtLevelForScroll
    argUpper = args[0].upper()
    if argUpper == 'TOME':
        itemname = argUpper
        tomename = ' '.join(args[2:-1])    # strip "Tome of" and tome level
    elif argUpper not in ("PLEVEL","SLEVEL","TLEVEL","SKILL","MONEY","XP","RENEW","PRESENCE"):
        itemname = ' '.join(args)
    else:
        itemname = argUpper
        levels = 0
        if len(args) > 1:
            try:
                levels = int(args[1])
            except:
                pass
    
    if itemname == 'MONEY':
        if len(args) > 1:
            try:
                amount = int(args[1])
            except:
                amount = 1000
        else:
            amount = 1000
        mob.player.platinum += amount
        if mob.player.platinum < 0:
            mob.player.platinum = 0
        if amount > 0:
            mob.player.sendGameText(RPG_MSG_GAME_GAINED,"Gained %i platinum.\\n"%amount)
        else:
            mob.player.sendGameText(RPG_MSG_GAME_DENIED,"Lost %i platinum.\\n"%(-amount))
        return
    elif itemname == 'XP':
        for c in mob.player.party.members:
            c.gainXP(1000000)
        return
    elif itemname == 'PLEVEL':
        if levels == 0:
            return #no point in trying
        for x in xrange(0,levels):
            mob.player.curChar.gainLevel(0)
        return
    elif itemname == 'SLEVEL':
        if levels == 0:
            return #no point in trying
        for x in xrange(0,levels):
            mob.player.curChar.gainLevel(1)
        return
    elif itemname == 'TLEVEL':
        if levels == 0:
            return #no point in trying
        for x in xrange(0,levels):
            mob.player.curChar.gainLevel(2)
        return
    elif itemname == 'SKILL':
        if levels == 0:
            return #no point in trying
        m = mob.player.curChar.mob
        for x in xrange(0,levels):
            for skname in m.skillLevels.iterkeys():
                mob.player.curChar.checkSkillRaise(skname,0,0)
        return
    elif itemname == 'PRESENCE':
        if levels < 0:
            mob.player.sendGameText(RPG_MSG_GAME_DENIED,"The value provided must be a positive integer.\\n")
            return
        if levels > RPG_MAX_PRESENCE:
            levels = RPG_MAX_PRESENCE
            
        currentCharacter = mob.player.curChar 
        currentCharacter.mob.pre = levels
        currentCharacter.mob.preBase = levels
        currentCharacter.spawn.preBase = levels         
        currentCharacter.mob.derivedDirty = True       

        mob.player.sendGameText(RPG_MSG_GAME_GAINED,"You now have %i presence.\\n"%levels)
        return        
    elif itemname == 'RENEW':
        for c in mob.player.party.members:
            m = c.mob
            m.health = m.maxHealth
            m.mana = m.maxMana
            m.stamina = m.maxStamina
        
            m.skillReuse = {}
            m.recastTimers = {}
            
            if m.pet:
                m.pet.health = m.pet.maxHealth
        
        mob.player.cinfoDirty = True
        return
    elif itemname == 'TOME':
        char = mob.player.curChar
        levels = ['1','2','3','4','5','6','7','8','9','10']
        lupper = args[-1].upper()
        try:
            tomelevel = levels.index(lupper) + 1
        except:
            try:
                tomelevel = RPG_ROMAN.index(lupper) + 1
            except:
                mob.player.sendGameText(RPG_MSG_GAME_DENIED,"%s isn't a valid tome level!\\n"%args[-1])
                return
        if tomelevel <= 1:
            mob.player.sendGameText(RPG_MSG_GAME_DENIED,"%s isn't a valid tome level!\\n"%args[-1])
            return
        try:
            con = ItemProto._connection.getConnection()
            scroll = ItemProto.get(con.execute("SELECT id FROM item_proto WHERE lower(name)=lower(\"Scroll of %s\") LIMIT 1;"%tomename).fetchone()[0])
        except:
            mob.player.sendGameText(RPG_MSG_GAME_DENIED,"%s is no spell name!\\n"%tomename)
            return
        nitem = getTomeAtLevelForScroll(scroll,tomelevel)
        if not char.giveItemInstance(nitem):
            nitem.destroySelf()
            mob.player.sendGameText(RPG_MSG_GAME_DENIED,"%s doesn't have enough inventory space\\n"%char.name)
            return
        char.refreshItems()
        mob.player.sendGameText(RPG_MSG_GAME_GAINED,"Gained %s\\n"%nitem.name)
        return
    
    from crafting import FocusGenSpecific
    item = FocusGenSpecific(itemname)
    if item:
        if not mob.player.curChar.giveItemInstance(item):
            item.destroySelf()
            mob.player.sendGameText(RPG_MSG_GAME_DENIED,"%s doesn't have enough inventory space\\n"%char.name)
            return
    else:
        item = mob.player.giveItem(itemname,True,True)
    
    if item:
        if RPG_SLOT_WORN_END > item.slot >= RPG_SLOT_WORN_BEGIN:
            mob.equipItem(item.slot,item)
        mob.player.sendGameText(RPG_MSG_GAME_GAINED,"Gained %s\\n"%item.name)
        return
    
    mob.player.sendGameText(RPG_MSG_GAME_DENIED,"Failure getting %s\\n"%itemname)
def CmdGimme(mob, args):
    from item import ItemProto, getTomeAtLevelForScroll
    argUpper = args[0].upper()
    if argUpper == 'TOME':
        itemname = argUpper
        tomename = ' '.join(args[2:-1])  # strip "Tome of" and tome level
    elif argUpper not in ("PLEVEL", "SLEVEL", "TLEVEL", "SKILL", "MONEY", "XP",
                          "RENEW", "PRESENCE"):
        itemname = ' '.join(args)
    else:
        itemname = argUpper
        levels = 0
        if len(args) > 1:
            try:
                levels = int(args[1])
            except:
                pass

    if itemname == 'MONEY':
        if len(args) > 1:
            try:
                amount = int(args[1])
            except:
                amount = 1000
        else:
            amount = 1000
        mob.player.platinum += amount
        if mob.player.platinum < 0:
            mob.player.platinum = 0
        if amount > 0:
            mob.player.sendGameText(RPG_MSG_GAME_GAINED,
                                    "Gained %i platinum.\\n" % amount)
        else:
            mob.player.sendGameText(RPG_MSG_GAME_DENIED,
                                    "Lost %i platinum.\\n" % (-amount))
        return
    elif itemname == 'XP':
        for c in mob.player.party.members:
            c.gainXP(1000000)
        return
    elif itemname == 'PLEVEL':
        if levels == 0:
            return  #no point in trying
        for x in xrange(0, levels):
            mob.player.curChar.gainLevel(0)
        return
    elif itemname == 'SLEVEL':
        if levels == 0:
            return  #no point in trying
        for x in xrange(0, levels):
            mob.player.curChar.gainLevel(1)
        return
    elif itemname == 'TLEVEL':
        if levels == 0:
            return  #no point in trying
        for x in xrange(0, levels):
            mob.player.curChar.gainLevel(2)
        return
    elif itemname == 'SKILL':
        if levels == 0:
            return  #no point in trying
        m = mob.player.curChar.mob
        for x in xrange(0, levels):
            for skname in m.skillLevels.iterkeys():
                mob.player.curChar.checkSkillRaise(skname, 0, 0)
        return
    elif itemname == 'PRESENCE':
        if levels < 0:
            mob.player.sendGameText(
                RPG_MSG_GAME_DENIED,
                "The value provided must be a positive integer.\\n")
            return
        if levels > RPG_MAX_PRESENCE:
            levels = RPG_MAX_PRESENCE

        currentCharacter = mob.player.curChar
        currentCharacter.mob.pre = levels
        currentCharacter.mob.preBase = levels
        currentCharacter.spawn.preBase = levels
        currentCharacter.mob.derivedDirty = True

        mob.player.sendGameText(RPG_MSG_GAME_GAINED,
                                "You now have %i presence.\\n" % levels)
        return
    elif itemname == 'RENEW':
        for c in mob.player.party.members:
            m = c.mob
            m.health = m.maxHealth
            m.mana = m.maxMana
            m.stamina = m.maxStamina

            m.skillReuse = {}
            m.recastTimers = {}

            if m.pet:
                m.pet.health = m.pet.maxHealth

        mob.player.cinfoDirty = True
        return
    elif itemname == 'TOME':
        char = mob.player.curChar
        levels = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
        lupper = args[-1].upper()
        try:
            tomelevel = levels.index(lupper) + 1
        except:
            try:
                tomelevel = RPG_ROMAN.index(lupper) + 1
            except:
                mob.player.sendGameText(
                    RPG_MSG_GAME_DENIED,
                    "%s isn't a valid tome level!\\n" % args[-1])
                return
        if tomelevel <= 1:
            mob.player.sendGameText(
                RPG_MSG_GAME_DENIED,
                "%s isn't a valid tome level!\\n" % args[-1])
            return
        try:
            con = ItemProto._connection.getConnection()
            scroll = ItemProto.get(
                con.execute(
                    "SELECT id FROM item_proto WHERE lower(name)=lower(\"Scroll of %s\") LIMIT 1;"
                    % tomename).fetchone()[0])
        except:
            mob.player.sendGameText(RPG_MSG_GAME_DENIED,
                                    "%s is no spell name!\\n" % tomename)
            return
        nitem = getTomeAtLevelForScroll(scroll, tomelevel)
        if not char.giveItemInstance(nitem):
            nitem.destroySelf()
            mob.player.sendGameText(
                RPG_MSG_GAME_DENIED,
                "%s doesn't have enough inventory space\\n" % char.name)
            return
        char.refreshItems()
        mob.player.sendGameText(RPG_MSG_GAME_GAINED,
                                "Gained %s\\n" % nitem.name)
        return

    from crafting import FocusGenSpecific
    item = FocusGenSpecific(itemname)
    if item:
        if not mob.player.curChar.giveItemInstance(item):
            item.destroySelf()
            mob.player.sendGameText(
                RPG_MSG_GAME_DENIED,
                "%s doesn't have enough inventory space\\n" % char.name)
            return
    else:
        item = mob.player.giveItem(itemname, True, True)

    if item:
        if RPG_SLOT_WORN_END > item.slot >= RPG_SLOT_WORN_BEGIN:
            mob.equipItem(item.slot, item)
        mob.player.sendGameText(RPG_MSG_GAME_GAINED,
                                "Gained %s\\n" % item.name)
        return

    mob.player.sendGameText(RPG_MSG_GAME_DENIED,
                            "Failure getting %s\\n" % itemname)