def FlagTouch(me, a, p, fid):
     n, f = flagcore.GetFlags(a, fid)
     assert n == 1
     oldfreq = f.freq
     f.state = asss.FI_ONMAP
     newfreq = f.freq = p.freq
     flagcore.SetFlags(a, fid, f)
     asss.call_callback(asss.CB_TURFTAG, (a, p, fid, oldfreq, newfreq), a)
Beispiel #2
0
def check_win(a):
    current = a.fg_wz_current
    ownedflags = 0
    winfreq = -1

    for i in range(current):
        n, f = flagcore.GetFlags(a, i)
        assert n == 1
        if f.state == asss.FI_ONMAP:
            if f.freq == winfreq:
                ownedflags += 1
            else:
                winfreq = f.freq
                ownedflags = 1

    # just to check
    for i in range(current, a.fg_wz_sets.max):
        n, f = flagcore.GetFlags(a, current)
        assert n == 0 or f.state == asss.FI_NONE

    if ownedflags == current and winfreq != -1:
        # we have a winner!
        points = asss.call_callback(asss.CB_WARZONEWIN, (a, winfreq, 0), a)
        # hardcoded default
        if points == 0: points = 1000
        flagcore.FlagReset(a, winfreq, points)
        a.fg_wz_current = 0
        if a.fg_wz_sets.warpplayersonwin:
            for i in range(0, a.fg_wz_sets.maxfreqtowarp + 1):
                game.GivePrize((a, i), asss.PRIZE_WARP, 1)

        if a.fg_wz_last_freq_to_win != winfreq:
            a.fg_wz_last_freq_to_win = winfreq
            a.fg_wz_consecutive_wins = 0

        a.fg_wz_consecutive_wins += 1
        if winfreq <= a.fg_wz_sets.maxfreqtoshuffle and \
           winfreq >= a.fg_wz_sets.minfreqtoshuffle:
            playerlist = []
            if a.fg_wz_sets.consecutivewinstoshuffle > 0 and \
               a.fg_wz_consecutive_wins >= a.fg_wz_sets.consecutivewinstoshuffle:
                a.fg_wz_last_freq_to_win = -1
                a.fg_wz_consecutive_wins = 0
                chat.SendArenaMessage(a,
                                      "---SPECCING EVERYONE TO EVEN TEAMS---")

                def playerstolist(p):
                    if p.freq <= a.fg_wz_sets.maxfreqtoshuffle and \
                       p.freq >= a.fg_wz_sets.minfreqtoshuffle and \
                       p.arena == a and p.type != asss.T_FAKE:
                        playerlist.append((p, p.ship))
                        game.SetShipAndFreq(p, asss.SHIP_SPEC, a.specfreq)

                asss.for_each_player(playerstolist)
                random.shuffle(playerlist)

                for (p, ship) in playerlist:
                    (actualship,
                     actualfreq) = a.fg_wz_freqman.ShipChange(p, ship, 0)
                    game.SetShipAndFreq(p, actualship, actualfreq)
Beispiel #3
0
def check_win(a):
	current = a.fg_wz_current
	ownedflags = 0
	winfreq = -1

	for i in xrange(current):
		n, f = flagcore.GetFlags(a, i)
		assert n == 1
		if f.state == asss.FI_ONMAP:
			if f.freq == winfreq:
				ownedflags += 1
			else:
				winfreq = f.freq
				ownedflags = 1

	# just to check
	for i in xrange(current, a.fg_wz_sets.max):
		n, f = flagcore.GetFlags(a, current)
		assert n == 0 or f.state == asss.FI_NONE

	if ownedflags == current and winfreq != -1:
		# we have a winner!
		points = asss.call_callback(asss.CB_WARZONEWIN, (a, winfreq, 0), a)
		# hardcoded default
		if points == 0: points = 1000
		flagcore.FlagReset(a, winfreq, points)
		a.fg_wz_current = 0
Beispiel #4
0
def check_win(a):
    current = a.fg_wz_current
    ownedflags = 0
    winfreq = -1

    for i in xrange(current):
        n, f = flagcore.GetFlags(a, i)
        assert n == 1
        if f.state == asss.FI_ONMAP:
            if f.freq == winfreq:
                ownedflags += 1
            else:
                winfreq = f.freq
                ownedflags = 1

    # just to check
    for i in xrange(current, a.fg_wz_sets.max):
        n, f = flagcore.GetFlags(a, current)
        assert n == 0 or f.state == asss.FI_NONE

    if ownedflags == current and winfreq != -1:
        # we have a winner!
        points = asss.call_callback(asss.CB_WARZONEWIN, (a, winfreq, 0), a)
        # hardcoded default
        if points == 0: points = 1000
        flagcore.FlagReset(a, winfreq, points)
        a.fg_wz_current = 0
Beispiel #5
0
def check_win(a):
  current = a.fg_wz_current
  ownedflags = 0
  winfreq = -1

  for i in range(current):
    n, f = flagcore.GetFlags(a, i)
    assert n == 1
    if f.state == asss.FI_ONMAP:
      if f.freq == winfreq:
        ownedflags += 1
      else:
        winfreq = f.freq
        ownedflags = 1

  # just to check
  for i in range(current, a.fg_wz_sets.max):
    n, f = flagcore.GetFlags(a, current)
    assert n == 0 or f.state == asss.FI_NONE

  if ownedflags == current and winfreq != -1:
    # we have a winner!
    points = asss.call_callback(asss.CB_WARZONEWIN, (a, winfreq, 0), a)
    # hardcoded default
    if points == 0: points = 1000
    flagcore.FlagReset(a, winfreq, points)
    a.fg_wz_current = 0
    if a.fg_wz_sets.warpplayersonwin:
      for i in range(0, a.fg_wz_sets.maxfreqtowarp+1):
        game.GivePrize((a, i), asss.PRIZE_WARP, 1)

    if a.fg_wz_last_freq_to_win != winfreq:
      a.fg_wz_last_freq_to_win = winfreq
      a.fg_wz_consecutive_wins = 0

    a.fg_wz_consecutive_wins += 1
    if winfreq <= a.fg_wz_sets.maxfreqtoshuffle and \
       winfreq >= a.fg_wz_sets.minfreqtoshuffle:
      playerlist = []
      if a.fg_wz_sets.consecutivewinstoshuffle > 0 and \
         a.fg_wz_consecutive_wins >= a.fg_wz_sets.consecutivewinstoshuffle:
        a.fg_wz_last_freq_to_win = -1
        a.fg_wz_consecutive_wins = 0
        chat.SendArenaMessage(a, "---SPECCING EVERYONE TO EVEN TEAMS---")
        def playerstolist(p):
          if p.freq <= a.fg_wz_sets.maxfreqtoshuffle and \
             p.freq >= a.fg_wz_sets.minfreqtoshuffle and \
             p.arena == a and p.type != asss.T_FAKE:
            playerlist.append((p, p.ship))
            game.SetShipAndFreq(p, asss.SHIP_SPEC, a.specfreq)
        asss.for_each_player(playerstolist)
        random.shuffle(playerlist)

        for (p, ship) in playerlist:
          (actualship, actualfreq) = a.fg_wz_freqman.ShipChange(p, ship, 0)
          game.SetShipAndFreq(p, actualship, actualfreq)