Example #1
0
def recruitResponse(player, arguments, target):
  guild = wolfpack.findguild(arguments[0])

  if not guild:
    player.socket.sysmessage('The guild you try to manage has already been disbanded.')
    return

  if not checkPermission(player, guild, PERMISSION_RECRUIT):
    player.socket.sysmessage('You are not allowed to recruit canidates for this guild.')
  else:
    if not target.char or not target.char.player or not target.char.socket:
      player.socket.sysmessage('You can only recruit players for your guild.')
    else:
      if target.char.guild:
        player.socket.sysmessage('That character is already in a guild.')
      else:
        for member in guild.members:
          sendMessage(member, "A new canidate %s has been recruited into your guild by %s." % (target.char.name, player.name))

        sendMessage(target.char, 'You have been recruited as a canidate for %s by %s.' % (guild.name, player.name))
        guild.addcanidate(target.char)
        target.char.addscript( 'guilds.member' )
        target.char.resendtooltip()
        if guild.guildstone:
          guild.guildstone.resendtooltip()
        guildCanidates(player, guild)
Example #2
0
def onShowTooltip(sender, target, tooltip):
  tooltip.add(1042971, "#1041429")

  guild = None
  if target.hastag('guild'):
    guild = wolfpack.findguild(int(target.gettag('guild')))

  if guild:
    if guild.guildstone != target:
      tooltip.add(1060847, "%s\t\n" % guild.name)
    else:
      if len(guild.abbreviation) == 0:
        appendix = "%s\n" % guild.name
      else:
        appendix = "%s [%s]\n" % (guild.name, guild.abbreviation)

      appendix += "Members: %u\n" % len(guild.members)
      appendix += "Canidates: %u\n" % len(guild.canidates)

      if guild.leader:
        appendix += "Leader: " + guild.leader.name + "\n"
      else:
        appendix += "Leader: None\n"
      tooltip.add(1060847, "%s\t\n" % appendix)
  else:
    tooltip.add(1060847, "Abandoned\t\n")
Example #3
0
def onShowTooltip(sender, target, tooltip):
    tooltip.add(1042971, "#1041429")

    guild = None
    if target.hastag("guild"):
        guild = wolfpack.findguild(int(target.gettag("guild")))

    if guild:
        if guild.guildstone != target:
            tooltip.add(1060847, tr("%s\t\n") % guild.name)
        else:
            if len(guild.abbreviation) == 0:
                appendix = tr("%s") % guild.name
            else:
                appendix = tr("%s [%s]") % (guild.name, guild.abbreviation)

            appendix += "\n" + tr("Members: %u") % len(guild.members)
            appendix += "\n" + tr("Candidates: %u") % len(guild.candidates)

            if guild.leader:
                appendix += "\n" + tr("Leader: %s") % guild.leader.name
            else:
                appendix += "\n" + tr("Leader: None")

            tooltip.add(1060847, "%s\t\n" % appendix)
    else:
        tooltip.add(1060847, tr("Abandoned") + "\t ")
Example #4
0
def guildMembershipResponse(player, arguments, response):
    guild = wolfpack.findguild(arguments[0])

    if not guild:
        player.socket.sysmessage(tr("The guild you try to manage has already been disbanded."))
        return

    if response.button == 1 and (player in guild.members or player in guild.candidates):
        # Toggle Guildsign
        if 1 in response.switches:
            if player in guild.members:
                guild.setmemberinfo(player, {"showsign": 0})
                player.socket.sysmessage(tr("You decide not to show your guildsign any longer."))
                player.resendtooltip()

        elif 2 in response.switches:
            if player in guild.members:
                guild.setmemberinfo(player, {"showsign": 1})
                player.socket.sysmessage(tr("You decide to show your guildsign from now on."))
                player.resendtooltip()

                # Resign from the guild
        elif 3 in response.switches:
            members = guild.members
            candidates = guild.candidates
            if player in members or player in candidates:
                guild.removemember(player)

                for member in members:
                    if member != player:
                        sendMessage(member, tr("%s has left your guild.") % player.name)

                player.socket.sysmessage(tr("You have resigned from your guild."))
                player.resendtooltip()
                if guild.guildstone:
                    guild.guildstone.resendtooltip()

                    # Resign from leadership
        elif 4 in response.switches:
            if player == guild.leader:
                members = guild.members
                guild.leader = None
                player.socket.sysmessage(tr("You have resigned from your position as the leader of this guild."))
                player.resendtooltip()
                for member in members:
                    if member != player:
                        sendMessage(
                            member,
                            tr(
                                "%s has resigned from the leadership position of your guild. You can elect a new leader by voting for a member at your guildstone."
                            )
                            % player.name,
                        )
                if guild.guildstone:
                    guild.guildstone.resendtooltip()

    mainMenu(player, guild)
def overview_response(player, args, response):
  if response.button == 0:
    return

  if len(response.switches) != 1:
    commandGuilds(player.socket, "guilds", "")
  else:
    guild = wolfpack.findguild(response.switches[0])

    if guild:
      guilds.stone.mainMenu(player, guild)
Example #6
0
def overview_response(player, args, response):
    if response.button == 0:
        return

    if len(response.switches) != 1:
        commandGuilds(player.socket, "guilds", "")
    else:
        guild = wolfpack.findguild(response.switches[0])

        if guild:
            guilds.stone.mainMenu(player, guild)
Example #7
0
def guildPropertiesResponse(player, arguments, response):
  guild = wolfpack.findguild(arguments[0])

  if not guild:
    player.socket.sysmessage('The guild you try to manage has already been disbanded.')
    return

  # Save changes if button 1 was pressed
  if response.button == 1:
      readonly = not checkPermission(player, guild, PERMISSION_PROPERTIES)

      if not readonly:
        messages = []

        if response.text[1] != guild.name:
          guild.name = response.text[1]
          messages.append("The name of your guild has been changed to '%s' by %s." % (guild.name, player.name))

        abbreviation = response.text[2][:3]
        if abbreviation != guild.abbreviation:
          guild.abbreviation = abbreviation
          messages.append("The abbreviation of your guild has been changed to [%s] by %s." % (abbreviation, player.name))

        if 0 in response.switches and guild.alignment != 0:
          guild.alignment = 0
          messages.append("The alignment of your guild has been changed to neutral by %s." % player.name)
        elif 1 in response.switches and guild.alignment != 1:
          guild.alignment = 1
          messages.append("The alignment of your guild has been changed to good by %s." % player.name)
        elif 2 in response.switches and guild.alignment != 2:
          guild.alignment = 2
          messages.append("The alignment of your guild has been changed to evil by %s." % player.name)

        if response.text[3] != guild.website:
          guild.website = response.text[3]
          messages.append("The website of your guild has been changed to %s by %s." % (guild.website, player.name))

        if response.text[4] != guild.charta:
          guild.charta = response.text[4]
          messages.append("The charta of your guild has been changed by %s. Check your guildstone for details." % player.name)

        for member in guild.members:
          if member.socket:
            member.resendtooltip()

          for message in messages:
            sendMessage(member, message)

        if guild.guildstone:
          guild.guildstone.resendtooltip()

  mainMenu(player, guild)
Example #8
0
def onUse(player, stone):
  guild = None
  if stone.hastag('guild'):
    guild = wolfpack.findguild(int(stone.gettag('guild')))

  if not guild:
    player.socket.sysmessage('This guildstone is abandoned.')
  else:
    if not player.cansee(stone) or not player.canreach(stone, 3):
      player.socket.clilocmessage(501661)
    else:
      mainMenu(player, guild)
  return 1
Example #9
0
def mainMenuResponse(player, arguments, response):
  if response.button != 0:
    if len(arguments) == 0:
      return

    guild = wolfpack.findguild(arguments[0])

    if not guild:
      player.socket.sysmessage('The guild you try to manage has already been disbanded.')
      return

    # Leave the guild
    if MAINMENU_MEMBERSHIP in response.switches:
      guildMembership(player, guild)

    # Disband the guild
    elif MAINMENU_DISBANDGUILD in response.switches:
      if player != guild.leader and not player.gm:
        player.socket.sysmessage('You need to be the leader of this guild or a gamemaster to disband it.')
      else:
        members = guild.members
        canidates = guild.canidates

        if guild.guildstone:
          guild.guildstone.delete()
        guild.delete()

        for char in members + canidates:
          sendMessage(char, "Your guild has been disbanded by %s!" % player.name)
          if char.socket:
            char.resendtooltip()

    # Show a page with member information
    elif MAINMENU_MEMBERS in response.switches:
      guildMembers(player, guild)

    # Show a page with canidate information
    elif MAINMENU_CANIDATES in response.switches:
      guildCanidates(player, guild)

    # Show a page with ally/enemy information:
    elif MAINMENU_DIPLOMACY in response.switches:
      guildDiplomacy(player, guild)

    # Show a page with the basic properties of this guild
    elif MAINMENU_GENERALPROPERTIES in response.switches:
      guildProperties(player, guild)

    return
Example #10
0
def guildMembersResponse(player, arguments, response):
  guild = wolfpack.findguild(arguments[0])

  if not guild:
    player.socket.sysmessage('The guild you try to manage has already been disbanded.')
    return

  if response.button == 0 or len(response.switches) != 1:
    mainMenu(player, guild)
  else:
    # Show a detail menu if possible
    char = wolfpack.findchar(response.switches[0])

    if not char or not char.player or char not in guild.members:
      guildMembers(player, guild)
    else:
      guildMemberDetails(player, guild, char)
Example #11
0
def guildCanidatesResponse(player, arguments, response):
  guild = wolfpack.findguild(arguments[0])

  if not guild:
    player.socket.sysmessage('The guild you try to manage has already been disbanded.')
    return

  if response.button == 0:
    mainMenu(player, guild)
  else:
    if len(response.switches) == 1:
      switch = response.switches[0]

      # Expel a canidate
      if switch & 0x80000000:
        if checkPermission(player, guild, PERMISSION_EXPEL):
          switch &= ~0x80000000
          char = wolfpack.findchar(switch)
          if char.player and char in guild.canidates:
            guild.removecanidate(char)
            sendMessage(char, "You have been expelled from your guild by %s." % player.name)
            for member in guild.members:
              sendMessage(member, "The canidate %s has been expelled from your guild by %s." % (char.name, player.name))
            char.resendtooltip()
            if guild.guildstone:
              guild.guildstone.resendtooltip()
          else:
            player.socket.sysmessage('The selected player is not a canidate of this guild.')
        else:
          player.socket.sysmessage('You are not allowed to expel canidates in this guild.')

      # Promote a canidate
      elif switch & 0x40000000:
        if checkPermission(player, guild, PERMISSION_PROMOTE):
          switch &= ~0x40000000
          char = wolfpack.findchar(switch)
          if char.player and char in guild.canidates:
            guild.removecanidate(char)
            sendMessage(char, "You have been promoted to be a full member of your guild by %s." % player.name)
            for member in guild.members:
              sendMessage(member, "The canidate %s has been promoted to full member status by %s." % (char.name, player.name))
            guild.addmember(char)

            # Clean voting and or permissions
            char.deltag('vote_' + str(guild.serial))
            char.deltag('permissions_' + str(guild.serial))

            # Make sure our member has the neccesary event
            char.addscript( 'guilds.member' )
            char.resendtooltip()
            if guild.guildstone:
              guild.guildstone.resendtooltip()
          else:
            player.socket.sysmessage('The selected player is not a canidate of this guild.')
        else:
          player.socket.sysmessage('You are not allowed to promote canidates in this guild.')

      # Show a target for inviting someone into the guild
      elif switch == 1:
        if not checkPermission(player, guild, PERMISSION_RECRUIT):
          player.socket.sysmessage('You are not allowed to recruit canidates for this guild.')
        else:
          player.socket.sysmessage('Choose the player you want to recruit for your guild.')
          player.socket.attachtarget('guilds.stone.recruitResponse', [guild.serial])
          return

    # No switch has been selected
    else:
      mainMenu(player, guild)
      return

    guildCanidates(player, guild)
Example #12
0
def guildCanidatesOverviewResponse(player, arguments, response):
  guild = wolfpack.findguild(arguments[0])
  if guild:
    mainMenu(player, guild)
Example #13
0
def guildMemberDetailsResponse(player, arguments, response):
  guild = wolfpack.findguild(arguments[0])

  if not guild:
    player.socket.sysmessage('The guild you try to manage has already been disbanded.')
    return

  char = wolfpack.findchar(arguments[1])

  if not char or not char in guild.members:
    player.socket.sysmessage('The character has already left this guild.')
    guildMembers(player, guild)
    return

  if response.button == 0:
    guildMembers(player, guild)

  elif response.button == 1:
    # Edit the permissions
    if checkPermission(player, guild, PERMISSION_GRANT) and player != char and guild.leader != char:
      permissions = 0
      for switch in response.switches:
        permissions |= switch

      player.message('Original Switches: %x' % permissions)

      # We may only award permissions we have for ourself
      if not player.gm and player != guild.leader:
        permissions &= getPermissions(player, guild)
      org_permissions = getPermissions(char, guild)

      player.message('After Own Permissions: %x' % permissions)

      # Make sure that the permissions we cannot grant are inherited from his
      # current permissions
      permissions |= org_permissions & ~getPermissions(player, guild)

      player.message('Including Inherited: %x' % permissions)

      # Only change if neccesary
      if org_permissions != permissions:
        setPermissions(char, guild, permissions)
        player.socket.sysmessage('The permissions for %s have been modified.' % char.name)
        sendMessage(char, "Your guild permissions have been modified by %s. See your guildstone for details." % player.name)

    # Awards a guildtitle
    if checkPermission(player, guild, PERMISSION_TITLES):
      title = response.text[1]
      info = guild.getmemberinfo(char)
      if title != info['guildtitle']:
        info['guildtitle'] = title
        guild.setmemberinfo(char, info)
        sendMessage(char, "You have been granted the title '%s' by %s." % (title, player.name))
        player.socket.sysmessage('The guildtitle for %s has been changed.' % char.name)

    char.resendtooltip()
    guildMembers(player, guild)

  # Send a message to char
  elif response.button == 2:
    message = response.text[2]

    if len(message) > 0 and message != 'Enter message...':
      if char.socket:
        player.socket.sysmessage('Your message to %s has been sent.' % char.name)
        char.socket.sysmessage('%s: %s' % (player.name, message), player.saycolor)
      else:
        setPrivateMessage(char, player, message)
        player.socket.sysmessage('Your message has been queued up. You may edit your message on the guildstone until the recipient logs in.')
    else:
      setPrivateMessage(char, player, None)
      guildMemberDetails(player, guild, char)

    guildMembers(player, guild)

  # Kick a member out of the guild
  elif response.button == 3:
    if not checkPermission(player, guild, PERMISSION_KICK):
      player.socket.sysmessage('You lack the permission to kick members out of this guild.')
    elif char != player and char != guild.leader:
      guild.removemember(char)
      char.resendtooltip()
      sendMessage(char, 'You have been removed from your guild by %s.' % player.name)
      for member in guild.members:
        sendMessage(member, '%s has been removed from your guild by %s.' % (char.name, player.name))
      if guild.guildstone:
        guild.guildstone.resendtooltip()
    guildMembers(player, guild)

  # Change your vote for a leader voting
  elif response.button == 4:
    # Voting is only possible if there actually _is_ an election going on
    if not guild.leader:
      # Set the vote and then see if there are enough votes to promote a new leader
      vote = getVote(player, guild)

      # Place a new vote
      if 0x8001 in response.switches and vote != char.serial:
        # If we previously voted for someone else, tell him he doesnt have
        # our vote anymore.
        previous = wolfpack.findchar(vote)
        if previous and previous in guild.members:
          sendMessage(previous, '%s has withdrawn the vote for your leadership position.' % player.name)

        if char != player:
          player.socket.sysmessage('You place your vote for %s.' % char.name)
          sendMessage(char, '%s has voted for your leadership position.' % player.name)
        else:
          player.socket.sysmessage('You place your vote for yourself.')

        setVote(player, guild, char.serial)

      # Withdraw a specific vote
      elif 0x8001 not in response.switches and vote == char.serial:
        if char != player:
          player.socket.sysmessage('You withdraw your vote for %s.' % char.name)
          sendMessage(char, '%s has withdrawn the vote for your leadership position.' % player.name)
        else:
          player.socket.sysmessage('You withdraw your vote for yourself.')

        setVote(player, guild, 0)

      # Count votes and see if someone has more than 50% of all members votes
      # NOTE: He has to vote for himself to accept the leadership offer
      membercount = len(guild.members)
      canidates = {}
      members = guild.members
      for member in members:
        canidate = wolfpack.findchar(getVote(member, guild))
        if canidate in members:
          if canidates.has_key(canidate):
            canidates[canidate] += 1
          else:
            canidates[canidate] = 1

      for (canidate, votes) in canidates.items():
        if votes > floor(membercount * 0.50):
          # Member has enough votes to be a leader
          # Check if he voted for himself
          canidatevote = getVote(canidate, guild)
          if canidatevote == canidate.serial:
            for member in guild.members:
              if member != canidate:
                sendMessage(member, '%s has been elected as the new leader of your guild.' % canidate.name)
              else:
                sendMessage(canidate, 'You have been elected as the new leader of your guild.')
            guild.leader = canidate
            canidate.resendtooltip()
            if guild.guildstone:
              guild.guildstone.resendtooltip()
          else:
            sendMessage(canidate, 'You have enough votes to become the new leader of your guild. To accept this result, please vote for yourself at your guildstone.')
          break

      guildMembers(player, guild)