Guest User

Untitled

a guest
Jun 22nd, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.50 KB | None | 0 0
  1. from ..tools.events import wcs_event
  2. from ..tools.Skills import Skill
  3. from ..tools import RaceTools
  4. from ..tools import DatabaseManager
  5. from random import randint
  6.  
  7. import es
  8. import gamethread
  9. import playerlib
  10. import random
  11.  
  12. class MegaMan( object ):
  13. ############Restrictions: Boots of Speed, Sock of Feather################
  14. def __init__( self ):
  15. self.RaceName = "Mega Man"
  16. self.Coder = "MrCoolness & Mini"
  17. self.TeamLimit = 2
  18. self.RequiredLevel = 0 #1500
  19. self.NumSkills = 4
  20. self.HasUltimate = True
  21. self.AbilityCooldown = 15
  22. self.UltimateCooldown = 32.5
  23.  
  24. self.Skill_1 = Skill( "Charging Shot", "[Attack] Charge up your shot for bonus damage.", 10, 0, wcs_event['None'] )
  25. self.Skill_2 = Skill( "Dash", "[Ability] Run faster for a short duration", 20, 0, wcs_event['Ability'] )
  26. self.Skill_3 = Skill( "Jump and Shoot", "[Passive] Mega Man is an expert at jumping and shooting", 0, 0, wcs_event['None'] )
  27. self.Skill_4 = Skill( "Mega Armor", "[Ultimate] Mega Man reduces damage taken.", 10, 8, wcs_event['Ultimate'] )
  28.  
  29. self.SkillList = [ self.Skill_1, self.Skill_2, self.Skill_3, self.Skill_4 ]
  30.  
  31. self.Function = { '0':self.derp, '1':self.Dash, '2':self.derp, '3':self.Mega_Armor }
  32.  
  33. def derp( self, event_var, lvl ):
  34. pass
  35.  
  36. _playerDash = {}
  37. def Dash( self, event_var, lvl ) :
  38. self._playerDash[ str(userid) ] = True
  39. userid = event_var['userid']
  40. player = playerlib.getPlayer( userid )
  41. speed = lvl * 3 / 100.0
  42. player.setSpeed( 1 + speed )
  43. es.tell( userid, '#multi', '#lightgreenNarcissistic #greengrants you #lightgreen%i #greenbonus speed.' % speed )
  44. gamethread.delayed( 3, self.DashOff, userid )
  45.  
  46. def DashOff( self, event_var, lvl ) :
  47. userid = event_var['userid']
  48. self._playerDash[ str(userid) ] = False
  49. es.tell( userid, '#multi', '#greenDash is ending.' )
  50.  
  51. _playerMegaArmor = {}
  52. def Mega_Armor( self, event_var, lvl ) :
  53. userid = event_var['userid']
  54. duration = lvl * 0.75
  55. reduction = ( lvl * 5 ) / 100.0
  56. if ( self._playerMasteryReduction[ str(userid) ] == True ) :
  57. reduction += 0.2
  58. self._playerMegaArmor[str(userid)] = True
  59. es.tell( userid, '#multi', '#lightgreenMega Armor #greenreduces #lightgreen%i%% #greenof incoming damage.' % int(reduction * 100) )
  60. gamethread.delayed( duration, self.Mega_ArmorOff, userid )
  61.  
  62. def Mega_ArmorOff( self, userid ):
  63. self._playerMegaArmor[str(userid)] = False
  64. es.tell( userid, '#multi', '#lightgreenMega Armor #greenis ending.' )
  65.  
  66. def player_hurt( self, event_var, skills ):
  67. userid = event_var['userid']
  68. megaArmorLvl = skills[3]
  69. if ( self._playerMegaArmor[str(userid)] == True and megaArmorLvl > 0 ):
  70. reduction = ( megaArmorLvl * 5 ) / 100.0
  71. if ( self._playerMasteryReduction[ str(userid) ] == True ) :
  72. reduction += 0.25
  73. healthlost = int(event_var['dmg_health'])
  74. armorlost = int(event_var['dmg_armor'])
  75. player = playerlib.getPlayer( userid )
  76. player.health += healthlost * reduction
  77. player.armor += armorlost * reduction
  78.  
  79. def Charging_Shot_On( self, userid ) :
  80. player = playerlib.getPlayer( userid )
  81. if ( str(userid) in self._playerChargingShot and not player.isdead ):
  82. es.tell( userid, '#multi', '#lightgreenCharging Shot #green is ready!' )
  83. self._playerChargingShot[ str(userid) ] = True
  84.  
  85. def player_attack( self, event_var, skills ):
  86. userid = event_var['attacker']
  87. victim = event_var['userid']
  88. chargingShotLvl = skills[0]
  89. if ( self._playerChargingShot[ str(userid) ] == True and chargingShotLvl > 0 ):
  90. damage = 20
  91. es.server.queuecmd( 'damage %s %i %i %s' % ( str(victim), damage, 32, str(userid) ) )
  92. es.tell( userid, '#multi', '#lightgreenCharging Shot #greendeals #lightgreen20 #greenbonus damage!' )
  93. self._playerChargingShot[str(userid)] = False
  94. gamethread.delayed( (16 - chargingShotLvl), self.Charging_Shot_On, userid )
  95. if ( self._playerMasteryDamage[str(userid)] > 0 ):
  96. rand = randint( 1, 100 )
  97. if ( 50 >= rand ):
  98. es.server.queuecmd( 'damage %s %i %i %s' % ( str(victim), self._playerMasteryDamage[str(userid)], 32, str(userid) ) )
  99. es.tell( userid, '#multi', '#lightgreenRace Mastery #greendeals #lightgreen%i #greenbonus damage!' % ( self._playerMasteryDamage[str(userid)] ) )
  100.  
  101. def round_end( self, event_var, skills ):
  102. self._playerChargingShot.clear()
  103. self._playerMegaArmor.clear()
  104.  
  105. _playerChargingShot = {}
  106. _playerMasteryDamage = {}
  107. _playerMasteryReduction = {}
  108. def player_spawn( self, event_var, skills ):
  109. userid = event_var['userid']
  110. steamid = es.getplayersteamid( userid )
  111. RaceTools.setgravity( userid, 0.75 )
  112. es.tell( userid, '#multi', '#greenJumping and Shooting!' )
  113. RaceTools.setplayercolor( userid, 0.5, 0.5, 1, 1, 1 )
  114. self._playerChargingShot[ str(userid) ] = True
  115. es.tell( userid, '#multi', '#lightgreenCharging Shot #green is ready!' )
  116. totallvl = DatabaseManager._db.GetPlayerLevel( steamid )
  117. if ( totallvl[0] >= 75 ):
  118. damage = (totallvl[0] - 75) / 5
  119. if ( damage >= 5 ):
  120. damage = 5
  121. self._playerMasteryDamage[ str(userid) ] = int(damage)
  122. es.tell( userid, '#multi', '#lightgreenRace Mastery: #greenyour bullets are more powerful! #lightgreen50%% #greenchance for #lightgreen%i #greenbonus damage' % int(damage) )
  123. else:
  124. self._playerMasteryDamage[ str(userid) ] = 0
  125. if ( totallvl[3] >= 180 ):
  126. self._playerMasteryReduction[ str(userid) ] = True
  127. es.tell( userid, '#multi', '#lightgreenRace Mastery: #greenyour ultimate is more powerful!' )
Add Comment
Please, Sign In to add comment