from __future__ import division import wcs, es, random, gamethread, playerlib from wcs import wcs info = es.AddonInfo() info['name'] = "Soul Reaver" info['version'] = "1.2.72" info['author'] = "Largo Usagi" info['url'] = "bfs.myftp.org" info['description'] = "Soul Reaver by Largo Usagi" RaceName = 'Soul Reaver' wcs.Race(RaceName).registerSkill('Torment Soul', 8, 1, 'A Chance To Slow Oponents.') wcs.Race(RaceName).registerSkill('Heavy Soul', 8, 1, 'Increases Your Streingth.') wcs.Race(RaceName).registerSkill('Ancient Drugs', 8, 1, 'Drugs, With Some Strange Side Effects.(Ability)') wcs.Race(RaceName).registerSkill('Soul Collector', 8, 1, 'Collects Souls And increases the Power of Your Own.') wcs.Race(RaceName).registerSkill('Soul Sacrifice', 8, 1, 'Sacrifice a collected soul for a Health Bonus.(Ability2)') wcs.Race(RaceName).registerUltimate('Ethereal Form', 20, 8, 1, 'Turn into an Ethereal Being.') es.ServerVar('SoulReaverVersion',info.version,'Current Soul Reaver Version').makepublic() def player_death(ev): steamid = ev['es_attackersteamid'] attacker = es.getuserid(steamid) attacker = int(attacker) effect = wcs.Effect() if wcs.GetRace(attacker) == RaceName: if wcs.GetLevel(attacker,RaceName,"Soul Collecter"): sLevel = wcs.GetLevel(attacker,RaceName,"Soul Collecter") soulProb = sLevel * 10 gen = random.randint(1,100) if gen <= soulProb: effect.Smoke(ev['userid']) tempSouls = wcs.Command(attacker).ReturnDict('souls') + 1 wcs.Command(attacker).UpdateDict('souls', tempSouls) es.tell(attacker, "#green", "Your Soul Collection Has increased By 1.") def prep_hurt(ev): userid = int(ev['userid']) attacker = int(ev['attacker']) effect = wcs.Effect() if wcs.GetRace(attacker) == RaceName: if wcs.GetLevel(attacker,RaceName,'Torment Soul') >= 1: slowChance = wcs.GetLevel(attacker,RaceName,'Torment Soul') * 5 gen = random.randint(1,100) if gen <= slowChance: effect.Beam2(ev['attacker'], ev['userid'], 1, 255, 0, 0) reduction = 1 - (.0375 * wcs.GetLevel(attacker,RaceName,'Torment Soul')) nreduction = reduction * -1.0 wcs.Command(userid).SpeedAdd(nreduction) delaytime = wcs.GetLevel(attacker,RaceName,'Torment Soul') if delaytime > 4: delaytime = 4 wcs.Command(userid).Delayed(delaytime,wcs.Command(userid).SpeedAdd,reduction) es.tell(attacker, "#green", "You Torment Your Oponents Soul.") es.tell(userid, "#green", "Your Soul is in agony.") if wcs.Command(attacker).ReturnDict('EultOn') == 1: victim = playerlib.getPlayer(userid) HPdamage = int(ev['dmg_health']) hp = es.getplayerprop(userid, 'CBasePlayer.m_iHealth') hp = hp + HPdamage newHp = int(hp) es.setplayerprop(userid, 'CBasePlayer.m_iHealth', newHp) if wcs.Command(userid).ReturnDict('EultOn') == 1: victim = playerlib.getPlayer(userid) HPdamage = int(ev['dmg_health']) hp = es.getplayerprop(userid, 'CBasePlayer.m_iHealth') hp = hp + HPdamage newHp = int(hp) es.setplayerprop(userid, 'CBasePlayer.m_iHealth', newHp) def player_spawn(ev): userid = int(ev['userid']) if wcs.GetRace(userid) == RaceName: wcs.Command(userid).UpdateDict('EultOn', 0) bonusLevel = wcs.GetLevel(userid,RaceName,'Heavy Soul') soulS = str(wcs.Command(userid).ReturnDict('souls')) wcs.Command(userid).UpdateDict('drugs', 0) es.tell(userid, "#green", "You have " + soulS + " Souls" ) if bonusLevel >= 1: bonusHp = bonusLevel * 8 wcs.Command(userid).HealthAdd(bonusHp) wcs.Effect().Misc1(userid, 11) if wcs.Command(userid).ReturnDict('souls') >= 1: bonus = wcs.Command(userid).ReturnDict('souls') if bonus > 10: bonus = 10 bonus = bonus * 0.1 wcs.Command(userid).SpeedAdd(bonus) mod = wcs.Command(userid).ReturnDict('souls') gbonus = 1 - float(mod) / 8.0 if gbonus < .7: gbonus = .7 wcs.Command(userid).SetGravity(gbonus) es.tell(userid, "#green", "You can feel Your Soul Pulsating in you") wcs.Effect().Misc3(userid, 10, 1) def player_ability_on(ev): userid = int(ev['userid']) if wcs.GetRace(userid) == RaceName: if wcs.Command(userid).ReturnDict('drugs') == 0: wcs.Command(userid).UpdateDict('drugs', 1) if wcs.GetLevel(userid,RaceName,'Ancient Drugs') >= 1: wcs.Command(userid).Drug() wcs.Command(userid).Speed(2) dhp = wcs.GetLevel(userid,RaceName,'Ancient Drugs') * 7 wcs.Command(userid).HealthAdd(dhp) es.tell(userid, "#green", "O.0 Oh O, OOoooo :)") def player_ability_on2(ev): userid = int(ev['userid']) if wcs.GetRace(userid) == RaceName: if wcs.GetLevel(userid,RaceName,'Soul Sacrifice') >= 1: if wcs.Command(userid).ReturnDict('souls') >= 1: lvl = wcs.GetLevel(userid,RaceName,'Soul Sacrifice') dtime = 10 - lvl dhp = wcs.GetLevel(userid,RaceName,'Soul Sacrifice') * 2 wcs.Command(userid).Drug(dtime) wcs.Command(userid).HealthAdd(dhp) tempSouls = wcs.Command(userid).ReturnDict('souls') - 1 wcs.Command(userid).UpdateDict('souls', tempSouls) wcs.Effect().Misc5(userid, 5, 1) es.tell(userid, "#green", "You Healed Yourself At the Sacrifice of Part of your Soul.") def player_ultimate_on(ev): userid = int(ev['userid']) if wcs.GetRace(userid) == RaceName: if wcs.Command(userid).ReturnDict('EultOn') == 0: loc = es.getplayerlocation(userid) wcs.Command(userid).UpdateDict('ultStart', loc) wcs.Command(userid).UpdateDict('EultOn', 1) wcs.Command(userid).Fade(0,1) maxtime = 5 * wcs.GetLevel(userid,RaceName,'Ethereal Form') user = playerlib.getPlayer(userid) noclip(userid) gamethread.delayed(maxtime, unUltimate, userid) telltime = str(maxtime) es.tell(userid, "#green", "You are now Etheral for No More Than " + telltime + " seconds") def player_ultimate_off(ev): userid = int(ev['userid']) if wcs.GetRace(userid) == RaceName: if wcs.Command(userid).ReturnDict('EultOn') == 1: wcs.Command(userid).UpdateDict('EultOn', 0) loc = wcs.Command(userid).ReturnDict('ultStart') user = playerlib.getPlayer(userid) noclip(userid) es.server.queuecmd('es_xsetpos %s %s %s %s'%(userid, loc[0],loc[1],loc[2])) wcs.Command(userid).Fade(255,1) es.tell(userid, "#green", "Welcome Back from the Etheral Plane") cool = int( (5 * wcs.GetLevel(userid,RaceName,'Ethereal Form') ) / 2 ) wcs.Command(userid).SetCoolDown('Ethereal Form',cool) def noclip(userid): if wcs.Command(userid).ReturnDict('noclip') == 0: wcs.Command(userid).UpdateDict('noclip', 1) es.setplayerprop(userid, "CBaseEntity.movetype", 8) else: wcs.Command(userid).UpdateDict('noclip', 0) es.setplayerprop(userid, "CBaseEntity.movetype", 2) def unUltimate(userid): if wcs.GetRace(userid) == RaceName: if wcs.Command(userid).ReturnDict('EultOn') == 1: es.tell(userid, "#green", "Out of time") startUltimate(userid)