Exemplo n.º 1
0
def onSwing(attacker, defender, time):
	# We won't allow any swings from or against players
	# who are offline
	if defender.player and not defender.socket and not defender.logouttime:
		attacker.attacktarget = 0
		return

	if attacker.player and not attacker.socket and not attacker.logouttime:
		attacker.attacktarget = 0
		return

	# Let the defender strike back if he doesnt fight anyone right now
	if not defender.attacktarget:
		defender.fight(attacker)

	if DEBUG_COMBAT_INFO == 1:
		attacker.log(LOG_PYTHON, "Swing from 0x%x at 0x%x\n" % (defender.serial, attacker.serial))

	if AGEOFSHADOWS:
		weapon = attacker.getweapon()

		try:
			# Ranged weapons need shooting first
			if weapon and (weapon.type == 1007 or weapon.type == 1006):
				# We have to be standing for >= 1000 ms, otherwise try again later
				if attacker.lastmovement + 1000 > wolfpack.time.currenttime():
					attacker.nextswing = attacker.lastmovement + 1000
					return

				# See if we can fire the weapon.
				# if not, wait until the next normal swing.
				if combat.aos.fireweapon(attacker, defender, weapon):
					if combat.aos.checkhit(attacker, defender, time):
						combat.aos.hit(attacker, defender, weapon, time)
					else:
						combat.aos.miss(attacker, defender, weapon, time)
			elif combat.aos.checkhit(attacker, defender, time):
					combat.aos.hit(attacker, defender, weapon, time)
			else:
					combat.aos.miss(attacker, defender, weapon, time)

		except:
			# Try again in 10 seconds
			attacker.nextswing = time + 10000
			raise

		delay = properties.getdelay(attacker, weapon)
		attacker.nextswing = time + delay
Exemplo n.º 2
0
def onSwing(attacker, defender, time):
    # Allow under no circumstances a swing against yourself
    if attacker == defender:
        attacker.attacktarget = None
        return

    # We won't allow any swings from or against players
    # who are offline
    if defender.player and not defender.socket and not defender.logouttime:
        attacker.attacktarget = 0
        return

    if attacker.player and not attacker.socket and not attacker.logouttime:
        attacker.attacktarget = 0
        return

    # Our defender went invisible or hidden?
    if defender.invisible or defender.hidden:
        attacker.attacktarget = None
        return

    # Wait one second until the attacker is unfrozen
    if attacker.frozen:
        attacker.nextswing = time + 500
        return

    # Reveal us
    attacker.reveal()

    # Let the defender strike back if he doesnt fight anyone right now
    if not defender.attacktarget:
        defender.fight(attacker)

    if DEBUG_COMBAT_INFO == 1:
        attacker.log(
            LOG_PYTHON,
            "Swing from 0x%x at 0x%x\n" % (defender.serial, attacker.serial))

    if AGEOFSHADOWS:
        weapon = attacker.getweapon()

        try:
            # Ranged weapons need shooting first
            if weapon and (weapon.type == 1007 or weapon.type == 1006):
                ability = getability(attacker)

                # We have to be standing for >= 500 ms, otherwise try again later
                if (
                        not ability or not ability.movingshot
                ) and attacker.lastmovement + 500 > wolfpack.time.currenttime(
                ):
                    attacker.nextswing = attacker.lastmovement + 500
                    return

                # See if we can fire the weapon.
                # if not, wait until the next normal swing.
                if combat.aos.fireweapon(attacker, defender, weapon):
                    combat.utilities.sendswing(attacker,
                                               defender)  # Send Swing

                    if combat.aos.checkhit(attacker, defender, time):
                        combat.aos.hit(attacker, defender, weapon, time)
                    else:
                        combat.aos.miss(attacker, defender, weapon, time)

            elif combat.aos.checkhit(attacker, defender, time):
                combat.utilities.sendswing(attacker, defender)  # Send Swing
                combat.aos.hit(attacker, defender, weapon, time)
            else:
                combat.utilities.sendswing(attacker, defender)  # Send Swing
                combat.aos.miss(attacker, defender, weapon, time)

        except:
            # Try again in 10 seconds
            attacker.nextswing = time + 10000
            raise

        delay = properties.getdelay(attacker, weapon)
        attacker.nextswing = time + delay
Exemplo n.º 3
0
def onSwing(attacker, defender, time):
	# Allow under no circumstances a swing against yourself
	if attacker == defender:
		attacker.attacktarget = None
		return
	
	# We won't allow any swings from or against players
	# who are offline
	if defender.player and not defender.socket and not defender.logouttime:
		attacker.attacktarget = 0
		return

	if attacker.player and not attacker.socket and not attacker.logouttime:
		attacker.attacktarget = 0
		return

	# Our defender went invisible or hidden?
	if defender.invisible or defender.hidden:
		attacker.attacktarget = None
		return
		
	# Wait one second until the attacker is unfrozen
	if attacker.frozen:
		attacker.nextswing = time + 500
		return

	# Reveal us
	attacker.reveal()

	# Let the defender strike back if he doesnt fight anyone right now
	if not defender.attacktarget:
		defender.fight(attacker)

	if DEBUG_COMBAT_INFO == 1:
		attacker.log(LOG_PYTHON, "Swing from 0x%x at 0x%x\n" % (defender.serial, attacker.serial))

	if AGEOFSHADOWS:
		weapon = attacker.getweapon()

		try:
			# Ranged weapons need shooting first
			if weapon and (weapon.type == 1007 or weapon.type == 1006):
				ability = getability(attacker)				
				
				# We have to be standing for >= 500 ms, otherwise try again later
				if (not ability or not ability.movingshot) and attacker.lastmovement + 500 > wolfpack.time.currenttime():
					attacker.nextswing = attacker.lastmovement + 500
					return

				# See if we can fire the weapon.
				# if not, wait until the next normal swing.
				if combat.aos.fireweapon(attacker, defender, weapon):
					combat.utilities.sendswing(attacker, defender) # Send Swing
					
					if combat.aos.checkhit(attacker, defender, time):
						combat.aos.hit(attacker, defender, weapon, time)
					else:
						combat.aos.miss(attacker, defender, weapon, time)

			elif combat.aos.checkhit(attacker, defender, time):
				combat.utilities.sendswing(attacker, defender) # Send Swing
				combat.aos.hit(attacker, defender, weapon, time)
			else:
				combat.utilities.sendswing(attacker, defender) # Send Swing
				combat.aos.miss(attacker, defender, weapon, time)

		except:
			# Try again in 10 seconds
			attacker.nextswing = time + 10000
			raise

		delay = properties.getdelay(attacker, weapon)
		attacker.nextswing = time + delay