''' Priest 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 = 'Priest' wcs.Race(RaceName).registerSkill('Priest Training',2,4,'Unlock new skills to use.') wcs.Race(RaceName).registerSkill('Heal',3,3,'Heal nearby allies.') wcs.Race(RaceName).registerSkill('Devotion Aura',5,1,'Nearby allies take reduced damage.',1,'Priest Training') wcs.Race(RaceName).registerSkill('Inner Fire', 4,2,'Buff target ally.(Ability)',2,'Priest Training') wcs.Race(RaceName).registerMinLevel(30) wcs.Race(RaceName).registerWeaponRestriction('allow only', ('knife','usp','glock','p228','hegrenade')) def player_hurt(ev): userid = int(ev['userid']) attacker = int(ev['attacker']) damage = int(ev['dmg_health']) inner = wcs.Command(userid).ReturnDict('inner bonus') ainner = wcs.Command(attacker).ReturnDict('inner bonus') dev = wcs.Command(userid).ReturnDict('dev bonus') if dev: wcs.Command(userid).Heal(damage*dev) if inner: wcs.Command(userid).Heal(damage*.25) if ainner: wcs.Command(userid).Damage(damage*.1,32,attacker) def player_ability_on(ev): userid = int(ev['userid']) if not wcs.Command(userid).GetCoolDown('Inner Fire'): target = wcs.Command(userid).GetViewPlayer() if target: if not wcs.Command(target).ReturnDict('inner bonus'): wcs.Command(target).UpdateDict('inner bonus',1) wcs.Command(target).Delayed(8,wcs.Command(target).UpdateDict,('inner bonus',0)) wcs.Command(userid).SetCoolDown('Inner Fire',24/wcs.GetLevel(userid,RaceName,'Inner Fire')) wcs.Effect().Misc4.(target,.55,.5) wcs.Command(target).Delayed(.5,wcs.Effect().Misc4,(target,.55,.5)) wcs.Command(target).Delayed(1,wcs.Effect().Misc4,(target,.55,.5)) wcs.Command(target).Delayed(1.5,wcs.Effect().Misc4,(target,.55,.5)) wcs.Command(target).Delayed(2,wcs.Effect().Misc4,(target,.55,.5)) wcs.Command(target).Delayed(2.5,wcs.Effect().Misc4,(target,.55,.5)) wcs.Command(target).Delayed(3,wcs.Effect().Misc4,(target,.55,.5)) wcs.Command(target).Delayed(3.5,wcs.Effect().Misc4,(target,.55,.5)) wcs.Command(target).Delayed(4,wcs.Effect().Misc4,(target,.55,.5)) wcs.Command(target).Delayed(4.5,wcs.Effect().Misc4,(target,.55,.5)) wcs.Command(target).Delayed(5,wcs.Effect().Misc4,(target,.55,.5)) wcs.Command(target).Delayed(5.5,wcs.Effect().Misc4,(target,.55,.5)) wcs.Command(target).Delayed(6,wcs.Effect().Misc4,(target,.55,.5)) wcs.Command(target).Delayed(6.5,wcs.Effect().Misc4,(target,.55,.5)) wcs.Command(target).Delayed(7,wcs.Effect().Misc4,(target,.55,.5)) wcs.Command(target).Delayed(7.5,wcs.Effect().Misc4,(target,.55,.5)) else: es.tell(userid, '#multi', '#lightgreenInner Fire#default - #greenYou need to wait %s more seconds before using this again.'%wcs.Command(userid).GetCoolDown('Inner Fire')) def player_spawn(event_var): userid = int(event_var['userid']) wcs.Command(userid).UpdateDict('inner bonus', 0) wcs.Command(userid).UpdateDict('dev bonus', 0) wcs.Command(userid).UpdateDict('dev list', []) auralevel = wcs.GetLevel(userid,RaceName,'Devotion Aura') if auralevel: wcs.Command(userid).UpdateDict('dev bonus', auralevel*.05) if not wcs.Command(userid).ReturnDict('looping'): aura_loop(userid) if wcs.GetLevel(userid,RaceName,'Heal'): heal_loop(userid) def heal_loop(userid): if not playerlib.getPlayer(userid).get('isdead'): wcs.Command(userid).Delayed(1.5,heal_loop,userid) x,y,z = es.getplayerlocation(userid) ident = '#t' if es.getplayerteam(userid) == 3: ident = '#ct' nearlist = wcs.Command(userid).GetNearCoordList(x,y,z,240,240,240,ident) targetlist = [] for id in nearlist: if playerlib.getPlayer(id).get('health') < wcs.Command(userid).ReturnDict('MaxHealth'): targetlist.append(id) if len(target): target = random.choice(targetlist) wcs.Effect().Beam1(userid,target,1,255,255,255) wcs.Command(target).Heal(wcs.GetLevel(userid,RaceName,'Heal')*4) wcs.Effect().Misc4(target,1.5,1) if target != userid: wcs.Command(userid).GiveXp(5,'healing an ally') def aura_loop(userid): if es.exists('userid', userid): if not playerlib.getPlayer(userid).get('isdead'): wcs.Command(userid).UpdateDict('looping',1) global devlist devlist = wcs.Command(userid).ReturnDict('dev list') for user in devlist: wcs.Command(user).Updatedict('dev bonus', 0) devlist = [] team = int(es.getplayerteam(userid)) if team == 2: filter = '#t' elif team == 3: filter = '#ct' wcs.Command(userid).Near(240,auraset,filter) wcs.Command(userid).UpdateDict('dev list', devlist) gamethread.delayed(1.5,aura_loop,userid) else: wcs.Command(userid).UpdateDict('looping',0) def auraset(userid, auramaster): global devlist devlist.append(userid) wcs.Command(userid).UpdateDict('dev bonus', wcs.GetLevel(auramaster,RaceName,'Devotion Aura')*.05) auraeffect(userid) gamethread.delayed(.45,auraeffect,userid) gamethread.delayed(.90,auraeffect,userid) gamethread.delayed(1.35,auraeffect,userid) def auraeffect(userid): wcs.Effect().Ring1(userid,40,.5,255,0,255)