''' Naga WCS:Python Race Coded By: J3ff Hoogland ''' import wcs, es, random, gamethread, playerlib from wcs import wcs #Our Race's Name - This is not needed I just feel it makes things look cleaner RaceName = 'Naga' wcs.Race(RaceName).registerSkill('Forked Lightning', 3, 3, "Use +ability to hit enemies in front of you with lightning.") wcs.Race(RaceName).registerSkill('Ice Arrow', 5, 1, 'You attacks may slow they person they hit.') wcs.Race(RaceName).registerSkill('Mana Shield', 4, 2, 'Some of the damage you take is instead subtracted from your cash.') wcs.Race(RaceName).registerUltimate('Tornado', 6, 1, 1, 'Hold your ulti to summon a tornado at the location you are looking at.') wcs.Race(RaceName).registerMinLevel(35) def player_hurt(event_var): userid = int(event_var['userid']) attacker = int(event_var['attacker']) damage = int(event_var['dmg_health']) ice = wcs.GetLevel(attacker, RaceName, 'Ice Arrow') if ice: if random.randint(1,100) <= 30: wcs.Command(userid).SpeedAdd(-(ice*.01)) wcs.Effect().Beam2(attacker, userid, 1.5, 0, 204, 204) es.tell(userid, '#multi', '#lightgreenIce Arrow #default- #greenYou have slowed %s.'%(event_var['es_username'])) mana = wcs.GetLevel(userid, RaceName, 'Mana Shield')*.15 if mana: cash = playerlib.getPlayer(userid).get('cash') if cash >= damage*mana: playerlib.getPlayer(userid).set('cash', cash-damage*mana) wcs.Command(userid).Heal(damage*mana) wcs.Effect().Misc1(userid, .5) def player_ability_on(event_var): userid = int(event_var['userid']) forked = wcs.GetLevel(userid, RaceName, 'Forked Lightning') if forked: if not wcs.Command(userid).GetCoolDown('Forked Lightning'): team = int(es.getplayerteam(userid)) if team == 2: filter = '#c' elif team == 3: filter = '#t' wcs.Command(userid).ViewCone(filter,150,600,forkedTarget) wcs.Command(userid).SetCoolDown('Forked Lightning',8) else: es.tell(userid,'#multi','#lightgreenForked Lightning #default- #greenYou must wait %s more seconds before using this skill again!'%wcs.Command(userid).GetCoolDown('Forked Lightning')) def forkedTarget(userid, attacker): wcs.Command(userid).Damage(wcs.GetLevel(attacker, RaceName, 'Forked Lightning')*20,32,attacker) wcs.Effect().Beam1(attacker, userid, 1.5, 255, 255, 0) es.tell(attacker,'#multi','#lightgreenForked Lightning #default- #greenYou have hit %s!'%es.getplayername(userid)) def player_ultimate_on(event_var): userid = int(event_var['userid']) if wcs.GetLevel(userid, RaceName, 'Tornado'): point = wcs.Command(userid).GetViewCoord() wcs.Command(userid).UpdateDict('torn location', point) es.server.queuecmd('est_freeze %s 1'%userid) gamethread.delayed(15,ultiOut,userid) wcs.Command(userid).UpdateDict('torn',1) torn_loop(userid, point) def player_ultimate_off(event_var): userid = int(event_var['userid']) if not wcs.Command(userid).GetCoolDown('Tornado'): ultiOut(userid) def torn_loop(userid, coord): if wcs.Command(userid).ReturnDict('torn'): gamethread.delayed(1, torn_loop, (userid, coord)) wcs.Command(userid).NearCoord(coord[0],coord[1],coord[2],500,500,500,torn_target) es.server.queuecmd('est_effect 10 #a 0 sprites/lgtning.vmt %s %s %s %s %s %s 5 0 2 %s %s %s 128 10'%(coord[0],coord[1],coord[2],30,50,1.5,0,125,255)) es.server.queuecmd('est_effect 10 #a 0 sprites/lgtning.vmt %s %s %s %s %s %s 5 0 2 %s %s %s 128 10'%(coord[0],coord[1],coord[2]+10,40,60,1.5,0,125,255)) es.server.queuecmd('est_effect 10 #a 0 sprites/lgtning.vmt %s %s %s %s %s %s 5 0 2 %s %s %s 128 10'%(coord[0],coord[1],coord[2]+20,50,70,1.5,0,125,255)) es.server.queuecmd('est_effect 10 #a 0 sprites/lgtning.vmt %s %s %s %s %s %s 5 0 2 %s %s %s 128 10'%(coord[0],coord[1],coord[2]+30,60,80,1.5,0,125,255)) es.server.queuecmd('est_effect 10 #a 0 sprites/lgtning.vmt %s %s %s %s %s %s 5 0 2 %s %s %s 128 10'%(coord[0],coord[1],coord[2]+40,70,90,1.5,0,125,255)) es.server.queuecmd('est_effect 10 #a 0 sprites/lgtning.vmt %s %s %s %s %s %s 5 0 2 %s %s %s 128 10'%(coord[0],coord[1],coord[2]+50,80,100,1.5,0,125,255)) es.server.queuecmd('est_effect 10 #a 0 sprites/lgtning.vmt %s %s %s %s %s %s 5 0 2 %s %s %s 128 10'%(coord[0],coord[1],coord[2]+60,90,110,1.5,0,125,255)) es.server.queuecmd('est_effect 10 #a 0 sprites/lgtning.vmt %s %s %s %s %s %s 5 0 2 %s %s %s 128 10'%(coord[0],coord[1],coord[2]+70,100,120,1.5,0,125,255)) es.server.queuecmd('est_effect 10 #a 0 sprites/lgtning.vmt %s %s %s %s %s %s 5 0 2 %s %s %s 128 10'%(coord[0],coord[1],coord[2]+80,110,130,1.5,0,125,255)) es.server.queuecmd('est_effect 10 #a 0 sprites/lgtning.vmt %s %s %s %s %s %s 5 0 2 %s %s %s 128 10'%(coord[0],coord[1],coord[2]+90,120,140,1.5,0,125,255)) es.server.queuecmd('est_effect 10 #a 0 sprites/lgtning.vmt %s %s %s %s %s %s 5 0 2 %s %s %s 128 10'%(coord[0],coord[1],coord[2]+100,130,150,1.5,0,125,255)) es.server.queuecmd('est_effect 10 #a 0 sprites/lgtning.vmt %s %s %s %s %s %s 5 0 2 %s %s %s 128 10'%(coord[0],coord[1],coord[2]+110,140,160,1.5,0,125,255)) es.server.queuecmd('est_effect 10 #a 0 sprites/lgtning.vmt %s %s %s %s %s %s 5 0 2 %s %s %s 128 10'%(coord[0],coord[1],coord[2]+120,150,170,1.5,0,125,255)) es.server.queuecmd('est_effect 10 #a 0 sprites/lgtning.vmt %s %s %s %s %s %s 5 0 2 %s %s %s 128 10'%(coord[0],coord[1],coord[2]+130,160,180,1.5,0,125,255)) es.server.queuecmd('est_effect 10 #a 0 sprites/lgtning.vmt %s %s %s %s %s %s 5 0 2 %s %s %s 128 10'%(coord[0],coord[1],coord[2]+140,170,190,1.5,0,125,255)) es.server.queuecmd('est_effect 10 #a 0 sprites/lgtning.vmt %s %s %s %s %s %s 5 0 2 %s %s %s 128 10'%(coord[0],coord[1],coord[2]+150,180,200,1.5,0,125,255)) def torn_target(userid, attacker): wcs.Effect().Beam1(attacker,userid,1.5,200,0,204) wcs.Command(userid).Damage(15,32,attacker) pull_place = wcs.Command(attacker).ReturnDict('torn location') es.server.queuecmd('est_pushto %s %s %s %s 5'%(userid, pull_place[0], pull_place[1], pull_place[2]+40)) def ultiOut(userid): wcs.Command(userid).UpdateDict('torn',0) es.server.queuecmd('est_freeze %s 0'%userid) wcs.Command(userid).SetCoolDown('Tornado',12)