import wcs, playerlib, es, random, gamethread from wcs import wcs z = 'Shadow Priest' race = wcs.Race(z) race.registerSkill("Shadow Word: Pain", 6, 3, "Attacks deal an additional <2...12> damage over 4 seconds") race.registerSkill("Circle of Healing", 5, 1, "Heal teammates within <8...16>m for <15...75> (8s cooldown)") race.registerSkill("Prayer of Fortitude", 3, 2, "Increase the health of all teammates by <10...30>") race.registerSkill("Vampiric Embrace", 2, 9, "Heals your teammates for <25...50>% of the damage you deal") race.registerUltimate("Shadowform", 6, 3, 2, "Increase damage done by 5 and decrease damage taken by 5. Can't heal in Shadowform") race.registerMinLevel(1) race.registerWeaponRestriction('block only',('m249')) def player_ultimate_on(event_var): userid = int(event_var['userid']) if wcs.GetLevel(userid, z, 'Shadowform'): if wcs.Command(userid)['shadowform']: wcs.Command(userid)['shadowform'] = 0 es.tell(userid, '#green', 'You are no longer in Shadowform.') else: wcs.Command(userid)['shadowform'] = 1 es.tell(userid, '#green', 'You are now in Shadowform!') def player_ability_on(event_var): userid = int(event_var['userid']) es_userteam = int(event_var['es_userteam']) if wcs.GetLevel(userid, z, 'Circle of Healing'): if not wcs.Command(userid)['shadowform']: if not wcs.Command(userid).GetCoolDown('Circle of Healing'): level = wcs.GetLevel(userid, z, 'Circle of Healing') heal = level * 15 radius = (6 + level*2)/0.0254 wcs.Command(userid).SetCoolDown('Circle of Healing', 8) wcs.Effect().Ring1(userid, radius, 1, 0, 255, 0) playerList = es.getUseridList() for k in playerList: if es_userteam == es.getPlayerTeam(k): teammate_location = vecmath.vector(es.getplayerlocation(k)) player_location = vecmath.vector(es.getplayerlocation(userid)) distance = vecmath.distance(teammate_location, player_location) if distance <= radius: wcs.Command(k).Heal() else: es.tell(userid, "#green", "You can't use Circle of Healing, yet!") else: es.tell(userid, '#green', "You can't heal in Shadowform!") def player_hurt(event_var): userid = int(event_var['userid']) es_userteam = int(event_var['es_userteam']) attacker = int(event_var['attacker']) if wcs.GetRace(attacker) == z: damage = wcs.GetLevel(attacker, z, 'Shadow Word: Pain') wcs.Command(userid).Drain(damage, 2, 4, attacker) es.tell(userid, "#green", "You've been afflicted by Shadow Word: Pain (%s damage over 4 seconds)!"%damage*2) if wcs.Command(userid)['shadowform']: wcs.Command(userid).Damage(5, 2, attacker) level = wcs.GetLevel(attacker, z, 'Vampiric Embrace') if level: playerList = es.getUseridList() for k in playerList: if es_userteam == es.getPlayerTeam(k): teammate_location = vecmath.vector(es.getplayerlocation(k)) attacker_location = vecmath.vector(es.getplayerlocation(attacker)) distance = vecmath.distance(teammate_location, attacker_location) if distance <= 1600: wcs.Command(k).Heal(event_var['dmg_health']/(2*level)) def prep_hurt(event_var): if wcs.GetRace(userid) == z: if wcs.Command(userid)['shadowform']: if event_var['dmg_health'] >= 5: wcs.Command(userid).SaveLife(5) else: wcs.Command(userid).SaveLife(event_var['dmg_health']) def player_spawn(event_var): userid = int(event_var['userid']) level = wcs.GetLevel(userid, z, 'Prayer of Fortitude') if level: playerList = es.getUseridList() for k in playerList: wcs.Command(k).HealthAdd(level*10)