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
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
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