import es import random import gamethread import playerlib import wcs from wcs import wcs RaceName = 'Trebors Frankenstein' race = wcs.Race(RaceName) """ Load the strings into the variable text """ text = race.loadStrings() """ ############################### """ """ ### Begin the configuration ### """ """ ############################### """ ###################################### # Create Configs! (Must be done first) config = race.config() # Frankies Leach config.addComment('********************') config.addComment('Frankies Leach') config.addComment(' Leach health from the player that you inflict') config.addComment(' damage on.') config.addComment('********************') config.addComment() leachMaxLevel = config.addVar('leachMaxLevel', 8, 'The maximum level for Frankies Leach Skill') leachLevelInterval = config.addVar('leachLevelInterval', 2, 'The intervals between the abilities to upgrade their Frankies Leach') leachPercent = config.addVar('leachPercent', 25, 'This is the percent of health received in comparison to the damage, multiplied by the users level.') # Electric Speed config.addComment() config.addComment('********************') config.addComment('Electric Speed') config.addComment(' This skill Gives you a speed boost upon spawn') config.addComment('********************') config.addComment() electricMaxLevel = config.addVar('electricMaxLevel', 5, 'The maximum level for the Electric Speed skill') electricLevelInterval = config.addVar('electricLevelInterval', 3, 'The intervals between the abilities to upgrade their Electric Speed skill') electricPercent = config.addVar('electricPercent', 8, 'The speed increase percentage per level') # Gravity Filter config.addComment() config.addComment('********************') config.addComment('Gravity Filter') config.addComment(' Built in Gravity nullifier') config.addComment('********************') config.addComment() gravMaxLevel = config.addVar('gravMaxLevel', 5, 'The maximum level for the Gravity skill') gravLevelInterval = config.addVar('gravLevelInterval', 1, 'The intervals between the abilities to upgrade their Gravity skill') gravPercent = config.addVar('gravPercent', 15, 'The gravity decrease percentage per level') config.load(True) """ ##################### """ """ ### END OF CONFIG ### """ """ ##################### """ # Load the file with server.cmd so it # loads instantly ######################################## wcs.Race(RaceName).registerSkill('Forked Lightning', 3, 3, "Use +ability to hit enemies in front of you with lightning.") race.registerSkill('Frankies Leach', int(leachMaxLevel), int(leachLevelInterval), "Leach health From the player you inflict damage on") race.registerSkill("Electric Speed", int(electricMaxLevel), int(electricLevelInterval), "This skill Gives you a speed boost upon spawn") race.registerSkill("Gravity Filter", int(gravMaxLevel), int(gravLevelInterval), "Built in Gravity nullifier") # Ultimate wcs.Race(RaceName).registerUltimate('Tornado', 6, 1, 1, 'Hold your ulti to summon a tornado at the location you are looking at.') 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_spawn(ev): userid = ev['userid'] player = wcs.Command(userid) electricLevel = wcs.GetLevel(userid, RaceName, 'Electric Speed') if electricLevel: plevel = electricLevel * int(electricPercent) * .03 player.SpeedAdd(plevel) es.tell(userid, '#multi', text('electric speed', {'speed': plevel * 100}, playerlib.getPlayer(userid).get("lang") ) ) gravLevel = wcs.GetLevel(userid, RaceName, 'Gravity Filter') if gravLevel: depth = 1 - gravLevel * int(gravPercent) * .01 player.SetGravity(depth) es.tell(userid,'#multi', text('gravity filter', {'gravity': depth * 100}, playerlib.getPlayer(userid).get("lang") ) ) def player_hurt(ev): attacker = ev['attacker'] userid = ev['userid'] dmg = int(ev['dmg_health']) leach = wcs.GetLevel(attacker, RaceName, 'Frankies Leach') if leach and userid != attacker: alpha = 60 + leach * 20 x,y,z = es.getplayerlocation(attacker) xx,yy,zz = es.getplayerlocation(userid) wcs.effect.BeamCustom('#a', '0', 'sprites/lgtning.vmt', x, y, z + 20, xx, yy, zz + 20, 0.5, 40, 40, 0, random.randint(128, 255), random.randint(1, 127), alpha) player = wcs.Command(attacker) amount = int(round(dmg * leach * (int(leachPercent) * .02) ) ) player.Heal(amount) es.tell(attacker, '#multi', text('frankies leach', {'health':amount, 'player':es.getplayername(userid)}, playerlib.getPlayer(userid).get("lang") ) ) 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)