''' Satyr WCS:Python Race Coded By: J3ff Hoogland ''' import wcs, es, random, playerlib, gamethread from wcs import wcs #Our Race's Name - This is not needed I just feel it makes things look cleaner RaceName = 'Satyr' wcs.Race(RaceName).registerSkill('Mana Burn', 3, 1, 'Use your ability to burn some of your cash and alot of your target\'s cash.') wcs.Race(RaceName).registerSkill('Unholy Speed', 4, 2, 'Gain a speed increase.') wcs.Race(RaceName).registerSkill('Curse', 4, 2, 'Have a chance to curse your victims.') wcs.Race(RaceName).registerSkill('Bloodlust', 4, 2, 'Have a chance to gain increased damage when attacking.') wcs.Race(RaceName).registerUltimate('Raise Dead', 9, 1, 1, 'Use your ultimate to bring to life an ally that died near you.') wcs.Race(RaceName).registerMinLevel(15) wcs.Race(RaceName).registerWeaponRestriction('allow only', ('knife')) def player_ability_on(event_var): userid = int(event_var['userid']) cash = playerlib.getPlayer(userid).get('cash') mana = wcs.GetLevel(userid,RaceName,'Mana Burn')*400 point = wcs.Command(userid).GetViewPlayer() if not playerlib.getPlayer(userid).get('isdead') and mana and cash >= 400 and point: if not wcs.Command(userid).GetCoolDown('Mana Burn'): playerlib.getPlayer(point).set('cash', playerlib.getPlayer(point).get('cash')-mana*400) playerlib.getPlayer(userid).set('cash', playerlib.getPlayer(userid).get('cash')-400) wcs.Command(userid).SetCoolDown('Mana Burn', 6) wcs.Effect().Beam1(userid,point,1.5,0,0,255) else: es.tell(userid,'#multi','#lightgreenMana Burn #default- #greenYou must wait %s more seconds before using this skill again!'%wcs.Command(userid).GetCoolDown('Mana Burn')) def player_spawn(event_var): userid = int(event_var['userid']) wcs.Command(userid).UpdateDict('cursed',0) wcs.Command(userid).UpdateDict('death location', (0,0,0)) if wcs.GetRace(userid) == 'Satyr': wcs.Command(userid).UpdateDict('bloodlust',0) wcs.Command(userid).UpdateDict('location', es.getplayerlocation(userid)) if not wcs.Command(userid).ReturnDict('looping'): stealth_loop(userid) unholy = wcs.GetLevel(userid, RaceName, 'Unholy Speed') if unholy: wcs.Command(userid).SpeedAdd(unholy*.08) es.tell(userid, '#multi', '#lightgreenUnholy Speed #default- #greenYou have a speed increase.') def player_hurt(event_var): userid = int(event_var['userid']) attacker = int(event_var['attacker']) damage = int(event_var['dmg_health']) if attacker: if wcs.Command(attacker).ReturnDict('cursed'): if not int(event_var['es_userdead']): wcs.Command(userid).Heal(damage) wcs.Effect().Ring1(attacker,75,.75,128,128,128) if wcs.Command(attacker).ReturnDict('bloodlust'): wcs.Command(userid).Damage(damage,32,attacker) curse = wcs.GetLevel(attacker, RaceName, 'Curse')*15 if curse >= random.randint(1,100) and not wcs.Command(userid).ReturnDict('cursed'): wcs.Command(userid).UpdateDict('cursed',1) es.tell(userid, '#multi', '#lightgreenCurse #default- #greenYou have been cursed for 5 seconds.') es.tell(attacker, '#multi', '#lightgreenCurse #default- #greenYou have cursed %s.'%event_var['es_username']) gamethread.delayed(5,wcs.Command(userid).UpdateDict,('cursed',0)) blood = wcs.GetLevel(attacker, RaceName, 'Bloodlust')*5 if blood >= random.randint(1,100) and not wcs.Command(attacker).ReturnDict('bloodlust'): wcs.Command(attacker).UpdateDict('bloodlust',1) es.tell(attacker, '#multi', '#lightgreenBlood Lust #default- #greenYour damage is increased for the next 5 seconds.') gamethread.delayed(5,wcs.Command(attacker).UpdateDict,('bloodlust',0)) def stealth_loop(userid): if not playerlib.getPlayer(userid).get('isdead') and es.exists('userid', userid): wcs.Command(userid).UpdateDict('looping',1) location = es.getplayerlocation(userid) if location == wcs.Command(userid).ReturnDict('location'): wcs.Command(userid).Fade(10, 1) else: wcs.Command(userid).Fade(45, 1) wcs.Command(userid).UpdateDict('location', location) gamethread.delayed(1, stealth_loop, userid) else: wcs.Command(userid).UpdateDict('looping',0) def player_death(userid): userid = int(event_var['userid']) wcs.Command(userid).UpdateDict('death location', es.getplayerlocation(userid)) def player_ultimate_on(event_var): userid = int(event_var['userid']) dead = wcs.GetLevel(userid, RaceName, 'Raise Dead') if dead: if not wcs.Command(userid).ReturnDict('raise used'): team = int(es.getplayerteam(userid)) if team == 2: filter = '#ct' elif team == 3: filter = '#t' deadnear(userid, filter) def deadnear(userid, filter): found = 0 x, y, z = es.getplayerlocation(self.userid) for player in playerlib.getPlayerList(filter): if int(player) != userid: qx,qy,qz = wcs.Command(player).ReturnDict('death location') if qx or qy or qz: qx -= x qy -= y qz -= z if abs(qx) <= 360 and abs(qy) <= 360 and abs(qz) <= 360 and playerlib.getPlayer(player).get('isdead') and not found and not wcs.Command(userid).GetWallBetween(player): found = 1 qx,qy,qz = wcs.Command(player).ReturnDict('death location') es.server.queuecmd('est_Spawn %s 1'%player) wcs.Command(userid).SetCoolDown('Raise Dead',30) es.server.queuecmd('es_xsetpos %s %s %s %s'%(player,qx,qy,qz)) wcs.Effect().Misc5(player,2,200) es.tell(player, '#multi', '#lightgreenRaise Dead #default- #green%s has restored you to life!'%es.getplayername(userid)) if not found: es.tell(userid, '#multi', '#lightgreenRaise Dead #default- #greenThere are no dead teamates close enough to raise back to life.')