''' Original Concept By The Jewbagel Coded for WCSP By Largo Usagi, Devotion Aura concept by CloudStrife, recoded by Largo Usagi in python Very Very Loosly Based on the Paladin By CloudStrife ''' from __future__ import division import wcs, es, random, gamethread, playerlib from wcs import wcs info = es.AddonInfo() info['name'] = "Paladin" info['version'] = "1.2.14" info['author'] = "Largo Usagi" info['url'] = "bfs.myftp.org" info['description'] = "Paladin by Largo Usagi" es.ServerVar('PaladinVersion',info.version,'Current Paladin Version').makepublic() raceName = info.name race = wcs.Race(raceName) donaterList = 'x' teamLimit = 3 raceMinLevl = 1 race.registerSkill('Regeneration', 5, 1, 'Regen Health(Up to 1 HP a second)') race.registerSkill('Divine Shield', 5, 1, 'Resist Damage(Max 10%)') race.registerSkill('Devotion Aura', 5, 1, 'Bonus Health (Max 50)') race.registerSkill('Healing Wards', 8, 1, 'Heals All Players Inside the Ward(Ability 1)') race.registerUltimate('Invulnerability', 8, 4, 1, 'Invincible For A Max of 8 Seconds') race.registerMinLevel(raceMinLevl) race.registerTeamLimit(teamLimit) def player_spawn(ev): userid = int(ev['userid']) if wcs.GetRace(userid) == raceName: wcs.Command(userid).UpdateDict('healingWards', 0) if wcs.GetLevel(userid,raceName,'Regeneration'): paliSkills().regen(userid) if wcs.GetLevel(userid,raceName,'Devotion Aura'): paliSkills().devotion(userid) #def player_hurt(ev): def prep_hurt(ev): userid = int(ev['userid']) if wcs.GetRace(userid) == raceName: if wcs.GetLevel(userid,raceName,'Divine Shield'): paliSkills().shield(ev) def player_ultimate_on(ev): userid = int(ev['userid']) if wcs.GetRace(userid) == raceName: if wcs.GetLevel(userid,raceName,'Invulnerability'): paliSkills().invuln(userid) def player_ability_on(ev): userid = int(ev['userid']) if wcs.GetRace(userid) == raceName: if wcs.GetLevel(userid,raceName,'Healing Wards'): if wcs.Command(userid).ReturnDict('healingWards') == 0: paliSkills().initHealingWard(userid) else: es.tell(userid,'#green','You allready have a ward down' ) class paliSkills: def __init__(self): pass def initHealingWard(self,userid): x,y,z = es.getplayerlocation(userid) wcs.Command(userid).UpdateDict('healingWards', 1) self.healingWard(userid,x,y,z) def healingWard(self,userid,x,y,z): if wcs.Command(userid).ReturnDict('healingWards') == 1: level = wcs.GetLevel(userid,raceName,'Healing Wards') team = es.getplayerteam(userid) Trange = 400 level = wcs.GetLevel(userid,raceName,'Healing Wards') healammount = level * 2 targets = [] for player in playerlib.getPlayerList('#alive'): xx, yy, zz = es.getplayerlocation(int(player)) range = ((x - xx) ** 2 + (y - yy) ** 2 + (z - zz) ** 2) ** 0.5 if range <= Trange: targets.append(int(player)) wcs.Effect().RingCustom('#all', 0, 'sprites/purpleglow1.vmt', x, y, z, 5, Trange, 10, 20, 20, 20, 10, 10, 250, 180, 10) wcs.Effect().RingCustom('#all', 0, 'sprites/purpleglow1.vmt', x, y, z, 5, Trange, 10, 20, 20, 20, 10, 10, 250, 180, 12) wcs.Effect().RingCustom('#all', 0, 'sprites/purpleglow1.vmt', x, y, z, 5, Trange, 10, 20, 20, 20, 10, 10, 250, 180, 14) wcs.Effect().RingCustom('#all', 0, 'sprites/purpleglow1.vmt', x, y, z, 5, Trange, 10, 20, 20, 20, 10, 10, 250, 180, 16) wcs.Effect().RingCustom('#all', 0, 'sprites/purpleglow1.vmt', x, y, z, 5, Trange, 10, 20, 20, 20, 10, 10, 250, 180, 18) wcs.Effect().RingCustom('#all', 0, 'sprites/purpleglow1.vmt', x, y, z, 5, Trange, 10, 20, 20, 20, 10, 10, 250, 180, 20) for target in targets: x1,y1,z1 = es.getplayerlocation(target) wcs.Command(target).Heal(healammount) es.tell(target,'#green','Healed By a Healing Ward') wcs.Effect().BeamCustom('#all', 0, 'materials/sprites/laser.vmt', x, y, z, x1, y1, z1 , 2, 5, 5, 10, 10, 250, 255) gamethread.delayed(10, self.healingWard, (userid,x,y,z) ) def shield(self,ev): userid = int(ev['userid']) level = wcs.GetLevel(userid,raceName,'Divine Shield') amount = (level * 2) / 100 damage = ev['dmg_health'] damage = float(damage) amount = float(amount) amount = amount * damage amount = int(amount) wcs.Command(userid).Heal(amount) es.tell(userid,'#multi','#greenResisted #lightgreen' + str(amount) + ' #greenDamage') def devotion(self,userid): level = wcs.GetLevel(userid,raceName,'Devotion Aura') amount = level * 10 es.tell(userid,'#green','Activated Devotion Aura') wcs.Command(userid).HealthAdd(amount) def invuln(self,userid): level = wcs.GetLevel(userid,raceName,'Invulnerability') time = (level*2) wcs.Command(userid).God(time) es.tell(userid,'#green','You are invulnerable for '+str(time)+' seconds' ) player.SetCoolDown('Invulnerability',60) def regen(self,userid): es.tell(userid,'#green','Activated Regeneration') level = wcs.GetLevel(userid,raceName,'Regeneration') time = (5 / level) wcs.Command(userid).Regen(1,time)