Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from ..tools.events import wcs_event
- from ..tools.Skills import Skill
- from ..tools import RaceTools
- from ..tools import DatabaseManager
- from random import randint
- import es
- import gamethread
- import playerlib
- import random
- class MegaMan( object ):
- ############Restrictions: Boots of Speed, Sock of Feather################
- def __init__( self ):
- self.RaceName = "Mega Man"
- self.Coder = "MrCoolness & Mini"
- self.TeamLimit = 2
- self.RequiredLevel = 0 #1500
- self.NumSkills = 4
- self.HasUltimate = True
- self.AbilityCooldown = 15
- self.UltimateCooldown = 32.5
- self.Skill_1 = Skill( "Charging Shot", "[Attack] Charge up your shot for bonus damage.", 10, 0, wcs_event['None'] )
- self.Skill_2 = Skill( "Dash", "[Ability] Run faster for a short duration", 20, 0, wcs_event['Ability'] )
- self.Skill_3 = Skill( "Jump and Shoot", "[Passive] Mega Man is an expert at jumping and shooting", 0, 0, wcs_event['None'] )
- self.Skill_4 = Skill( "Mega Armor", "[Ultimate] Mega Man reduces damage taken.", 10, 8, wcs_event['Ultimate'] )
- self.SkillList = [ self.Skill_1, self.Skill_2, self.Skill_3, self.Skill_4 ]
- self.Function = { '0':self.derp, '1':self.Dash, '2':self.derp, '3':self.Mega_Armor }
- def derp( self, event_var, lvl ):
- pass
- _playerDash = {}
- def Dash( self, event_var, lvl ) :
- self._playerDash[ str(userid) ] = True
- userid = event_var['userid']
- player = playerlib.getPlayer( userid )
- speed = lvl * 3 / 100.0
- player.setSpeed( 1 + speed )
- es.tell( userid, '#multi', '#lightgreenNarcissistic #greengrants you #lightgreen%i #greenbonus speed.' % speed )
- gamethread.delayed( 3, self.DashOff, userid )
- def DashOff( self, event_var, lvl ) :
- userid = event_var['userid']
- self._playerDash[ str(userid) ] = False
- es.tell( userid, '#multi', '#greenDash is ending.' )
- _playerMegaArmor = {}
- def Mega_Armor( self, event_var, lvl ) :
- userid = event_var['userid']
- duration = lvl * 0.75
- reduction = ( lvl * 5 ) / 100.0
- if ( self._playerMasteryReduction[ str(userid) ] == True ) :
- reduction += 0.2
- self._playerMegaArmor[str(userid)] = True
- es.tell( userid, '#multi', '#lightgreenMega Armor #greenreduces #lightgreen%i%% #greenof incoming damage.' % int(reduction * 100) )
- gamethread.delayed( duration, self.Mega_ArmorOff, userid )
- def Mega_ArmorOff( self, userid ):
- self._playerMegaArmor[str(userid)] = False
- es.tell( userid, '#multi', '#lightgreenMega Armor #greenis ending.' )
- def player_hurt( self, event_var, skills ):
- userid = event_var['userid']
- megaArmorLvl = skills[3]
- if ( self._playerMegaArmor[str(userid)] == True and megaArmorLvl > 0 ):
- reduction = ( megaArmorLvl * 5 ) / 100.0
- if ( self._playerMasteryReduction[ str(userid) ] == True ) :
- reduction += 0.25
- healthlost = int(event_var['dmg_health'])
- armorlost = int(event_var['dmg_armor'])
- player = playerlib.getPlayer( userid )
- player.health += healthlost * reduction
- player.armor += armorlost * reduction
- def Charging_Shot_On( self, userid ) :
- player = playerlib.getPlayer( userid )
- if ( str(userid) in self._playerChargingShot and not player.isdead ):
- es.tell( userid, '#multi', '#lightgreenCharging Shot #green is ready!' )
- self._playerChargingShot[ str(userid) ] = True
- def player_attack( self, event_var, skills ):
- userid = event_var['attacker']
- victim = event_var['userid']
- chargingShotLvl = skills[0]
- if ( self._playerChargingShot[ str(userid) ] == True and chargingShotLvl > 0 ):
- damage = 20
- es.server.queuecmd( 'damage %s %i %i %s' % ( str(victim), damage, 32, str(userid) ) )
- es.tell( userid, '#multi', '#lightgreenCharging Shot #greendeals #lightgreen20 #greenbonus damage!' )
- self._playerChargingShot[str(userid)] = False
- gamethread.delayed( (16 - chargingShotLvl), self.Charging_Shot_On, userid )
- if ( self._playerMasteryDamage[str(userid)] > 0 ):
- rand = randint( 1, 100 )
- if ( 50 >= rand ):
- es.server.queuecmd( 'damage %s %i %i %s' % ( str(victim), self._playerMasteryDamage[str(userid)], 32, str(userid) ) )
- es.tell( userid, '#multi', '#lightgreenRace Mastery #greendeals #lightgreen%i #greenbonus damage!' % ( self._playerMasteryDamage[str(userid)] ) )
- def round_end( self, event_var, skills ):
- self._playerChargingShot.clear()
- self._playerMegaArmor.clear()
- _playerChargingShot = {}
- _playerMasteryDamage = {}
- _playerMasteryReduction = {}
- def player_spawn( self, event_var, skills ):
- userid = event_var['userid']
- steamid = es.getplayersteamid( userid )
- RaceTools.setgravity( userid, 0.75 )
- es.tell( userid, '#multi', '#greenJumping and Shooting!' )
- RaceTools.setplayercolor( userid, 0.5, 0.5, 1, 1, 1 )
- self._playerChargingShot[ str(userid) ] = True
- es.tell( userid, '#multi', '#lightgreenCharging Shot #green is ready!' )
- totallvl = DatabaseManager._db.GetPlayerLevel( steamid )
- if ( totallvl[0] >= 75 ):
- damage = (totallvl[0] - 75) / 5
- if ( damage >= 5 ):
- damage = 5
- self._playerMasteryDamage[ str(userid) ] = int(damage)
- es.tell( userid, '#multi', '#lightgreenRace Mastery: #greenyour bullets are more powerful! #lightgreen50%% #greenchance for #lightgreen%i #greenbonus damage' % int(damage) )
- else:
- self._playerMasteryDamage[ str(userid) ] = 0
- if ( totallvl[3] >= 180 ):
- self._playerMasteryReduction[ str(userid) ] = True
- es.tell( userid, '#multi', '#lightgreenRace Mastery: #greenyour ultimate is more powerful!' )
Add Comment
Please, Sign In to add comment