import es, gamethread, os.path, cPickle, math, popuplib, weaponlib, random, playerlib, effectlib, cfglib, spe info = es.AddonInfo() info.name = "Spore" info.version = "Beta v1.7" info.author = "Devin Pariseau" info.url = "http://addons.eventscripts.com/addons/view/spore" info.description = "Allows players to gain and \"evolve\" certain abilities" es.ServerVar('spore_version',info.version,'Spore By: %s'%info.author).makepublic() # NO NEED TO OPEN THIS SCRIPT TO CHANGE SETTINGS # AFTER LOADING, EDIT THE "SPORE.CFG" FILE IN THE SPORE FOLDER, THEN RELOAD SPORE '''''''''''''''''''''''''''''''''''''''''''''''' config = cfglib.AddonCFG(es.getAddonPath("spore") + "/spore.cfg") config.text("******************************") config.text(" SPORE SETTINGS") config.text("*****************************") config.text("Be careful when setting the names of commands so that they do not interfere") config.text("with other scripts you are running") config.text("******************************") menuCommand = config.cvar("spore_menu_command", "sporemenu", "Text used to open the Spore menu") foodCommand = config.cvar("spore_food_command", "resetfood", "Command used to reset your feeding type") resetAbilities = config.cvar("spore_reset_abilities", "resetabilities", "Command used for a player to reset their abilities") resetEverything = config.cvar("spore_reset_everything", "spore_reset", "Command used to restart EVERYONES abilities") damage_dna = config.cvar("spore_dnaGained", .005, "Amount of DNA Gained for each point of damage dealt") round_dna = config.cvar("spore_round_dna", .4, "Amount of DNA Gained for winning the round") bomb_planted_dna = config.cvar("spore_bomb_planted_dna", .9, "Amount of DNA Gained for planting the bomb") bomb_exploded_dna = config.cvar("spore_bomb_exploded_dna", 1.1, "Amount of DNA Gained for the bomb exploding") bomb_defused_dna = config.cvar("spore_bomb_defused_dna", 1.4, "Amount of DNA Gained for defusing the bomb") hostage_rescued_dna = config.cvar("spore_hostage_rescued_dna", .3,"Amount of DNA Gained for rescuing a hostage") hostage_rescued_all_dna = config.cvar("spore_hostage_rescued_all_dna", 1, "Amount of DNA Gained for rescuing all hostages") config.write() es.ServerVar('spore_debug', 0) players = {} unlocks = {} skills = { 'Sight':0, 'Hearing':0, 'Smell':0, 'Herbivore':0, 'Carnivore':0, 'Omnivore':0, 'Arm':0, 'Leg':0, 'Strike':0, 'Bite':0, 'Poison':0, 'Size':0, 'Natural Armor':0, 'Camouflage':0, 'Intelligent':0, 'Charm': 0, 'Sing': 0, 'Wings': 0, 'Charge': 0, 'Jump': 0 } achievement_list = ['Spider', 'Fox', 'Owl', 'Ant', 'Scorpion', 'T-Rex', 'Mockingbird', 'Turtle', 'Dog'] def deBug(message): if es.ServerVar('spore_debug') == 1: es.msg('#multi', '#green', '*SPORE DEBUG:', '#default', message) def sporeMsg(message): es.msg('#multi', '#green', '*SPORE', '#default', message) def sporeTell(userid, messages=[]): message = '' x = 0 for k in messages: message += ' %s'%messages[x] x += 1 es.tell(userid, '#multi', '#green', '*SPORE', '#default', message) def load(): config.execute() global players, round_started, unlocks round_started = 0 str_path = es.getAddonPath('spore') + '/spore_players.db' if os.path.isfile(str_path): file_users = open(str_path) players = cPickle.load(file_users) file_users.close() sporeMsg('Skill Database loaded succesfully') str_path = es.getAddonPath('spore') + '/spore_achievements.db' if os.path.isfile(str_path): file_users = open(str_path) unlocks = cPickle.load(file_users) file_users.close() sporeMsg('Achievements Database loaded succesfully') spe.registerPreHook("player_hurt", prepHurt) global main, skillmenu, skillmenu2, info for k,v in skills.iteritems(): global tempitem tempitem = k.lower() tempitem = popuplib.create(k.lower()) setBotSkills() main = popuplib.create('main') main.addline(':*SPORE* Main Menu:') main.addline(':::::::::::::::::::') main.addline('-> 1. Evolve') main.addline('-> 2. My Stats') main.addline('-> 3. Help') main.addline('-> 4. Player Info') main.addline('-> 5. My Achievements') main.addline('-> 7. Reset Feeding Skill') main.addline('-> 8. Reset My Abilities') main.addline('0. Exit') main.submenu(1, 'skillmenu') main.submenu(3, 'infomenu') main.menuselect = mainSelection infomenu = popuplib.create('infomenu') infomenu.addline(':*SPORE* Help Menu:') infomenu.addline(':::::::::::::::::::') infomenu.addline('This mod allows you to gain skills') infomenu.addline('and abilities to enhance the game') infomenu.addline('of CS:S. As you deal damage, you') infomenu.addline('will gain "DNA". You use DNA to') infomenu.addline('purchase new abilities. It is ') infomenu.addline('recommended to take "Sight" as your') infomenu.addline('first ability. Type "%s" to reopen'%menuCommand) infomenu.addline('the menu.') skillmenu = popuplib.create('skillmenu') skillmenu.addline(':*SPORE* EVOL Menu:') skillmenu.addline(':::::::::::::::::::') skillmenu.addline('-> 1. Sight') skillmenu.addline('-> 2. Hearing') skillmenu.addline('-> 3. Smell') skillmenu.addline('-> 4. Herbivore') skillmenu.addline('-> 5. Carnivore') skillmenu.addline('-> 6. Omnivore') skillmenu.addline('-> 7. Arm') skillmenu.addline(':::::::::::::::::::') skillmenu.addline('-> 8. Main Menu') skillmenu.addline('-> 9. Evolution Menu 2') skillmenu.addline('0. Exit') skillmenu.submenu(8, 'main') skillmenu.submenu(9, 'skillmenu2') skillmenu.menuselect = skillmenuSelection skillmenu2 = popuplib.create('skillmenu2') skillmenu2.addline(':*SPORE* EVOL Menu:') skillmenu2.addline(':::::::::::::::::::') skillmenu2.addline('-> 1. Leg') skillmenu2.addline('-> 2. Strike') skillmenu2.addline('-> 3. Bite') skillmenu2.addline('-> 4. Poison') skillmenu2.addline('-> 5. Charge') skillmenu2.addline('-> 6. Size') skillmenu2.addline('-> 7. Natural Armor') skillmenu2.addline(':::::::::::::::::::') skillmenu2.addline('-> 8. Evolution Menu 1') skillmenu2.addline('-> 9. Evolution Menu 3') skillmenu2.addline('0. Exit') skillmenu2.submenu(8, 'skillmenu') skillmenu2.submenu(9, 'skillmenu3') skillmenu2.menuselect = skillmenu2Selection skillmenu3 = popuplib.create('skillmenu3') skillmenu3.addline(':*SPORE* EVOL Menu:') skillmenu3.addline(':::::::::::::::::::') skillmenu3.addline('-> 1. Camouflage') skillmenu3.addline('-> 2. Charm') skillmenu3.addline('-> 3. Sing') skillmenu3.addline('-> 4. Wings') skillmenu3.addline('-> 5. Jump') skillmenu3.addline('-> 6. Intelligent') skillmenu3.addline(':::::::::::::::::::') skillmenu3.addline('-> 8. Evolution Menu 2') skillmenu3.addline('-> 9. Main Menu') skillmenu3.addline('0. Exit') skillmenu3.submenu(8, 'skillmenu2') skillmenu3.submenu(9, 'main') skillmenu3.menuselect = skillmenu3Selection es.unregsaycmd(menuCommand) es.regsaycmd(menuCommand, 'spore/sendMain') es.unregclientcmd(foodCommand) es.regclientcmd(foodCommand, 'spore/resetfood') es.unregclientcmd(resetAbilities) es.regclientcmd(resetAbilities, 'spore/resetabilities') es.unregclientcmd('fly') es.regclientcmd('fly', 'spore/fly') #es.regcmd('cheat', 'spore/cheat') es.regcmd(resetEverything, 'spore/reset') es.regcmd('set', 'spore/set') def sendMain(): global main main.send(es.getcmduserid()) def mainSelection(userid, choice, popupid): if choice == 2: tempstats = players[playerlib.uniqueid(userid)] statmenu1 = popuplib.create('stat1menu') statmenu1.addline(':*SPORE* Stat Menu:') statmenu1.addline(':::::::::::::::::::') statmenu1.addline(':%s\'s Stats:'%es.getplayername(userid)) statmenu1.addline('DNA - %s'%str(float(tempstats['DNA'])).partition('.')[0]) statmenu1.addline('Sight - %s/1 * Hearing - %s/1 * Smell - %s/3'%(tempstats['Sight'], tempstats['Hearing'], tempstats['Smell'])) if tempstats['Herbivore']: statmenu1.addline('Herbivore - %s/3'%tempstats['Herbivore']) if tempstats['Carnivore']: statmenu1.addline('Carnivore - %s/3'%tempstats['Carnivore']) if tempstats['Omnivore']: statmenu1.addline('Omnivore - %s/3'%tempstats['Omnivore']) statmenu1.addline('Arm - %s/4 * Leg - %s/4'%(tempstats['Arm'], tempstats['Leg'])) statmenu1.addline('Strike - %s/4 * Bite - %s/4 * Poison - %s/4 * Charge - %s/4'%(tempstats['Strike'], tempstats['Bite'], tempstats['Poison'], tempstats['Charge'])) statmenu1.addline('Size - %s/4 * Natural Armor - %s/4'%(tempstats['Size'], tempstats['Natural Armor'])) statmenu1.addline('Intelligent - %s/4 * Camouflage - %s/4'%(tempstats['Intelligent'],tempstats['Camouflage'])) statmenu1.addline('Charm - %s/4 * Sing - %s/4'%(tempstats['Charm'], tempstats['Sing'])) statmenu1.addline('Jump - %s/4 * Wings - %s/4'%(tempstats['Jump'], tempstats['Wings'])) statmenu1.addline('-> 0. Exit') statmenu1.send(userid) if choice == 4: userid = es.getcmduserid() tempplayers = es.getUseridList('#all') playerMenu = popuplib.easymenu('Player Info List', '_popup_choice', playerDisplay) playerMenu.settitle('Pick A Player:') for player in tempplayers: playerMenu.addoption(player, es.getplayername(player)) playerMenu.send(userid) if choice == 5: deBug(unlocks) tempmenu = popuplib.create('tempmenu') tempmenu.addline(':*SPORE* Achievement Menu') tempmenu.addline(':::::::::::::::::::') tempmenu.addline('None will be listed if you') tempmenu.addline('haven\'t got any') for k in unlocks[playerlib.uniqueid(userid)]: if unlocks[playerlib.uniqueid(userid)][k] == 1: tempmenu.addline('Unlocked - [%s]'%k) tempmenu.addline('-> 0. Exit') tempmenu.send(userid) if choice == 7: tempstats = players[playerlib.uniqueid(userid)] if not tempstats['Herbivore'] and not tempstats['Carnivore'] and not tempstats['Omnivore']: sporeTell(userid, ['You don\'t need to worry about this at the momemnt']) return 0 tempmenu = popuplib.create('tempmenu') tempmenu.addline(':*SPORE* Reset Feeding Type Menu:') tempmenu.addline('::::::::::::::::::::') tempmenu.addline('CAUTION: DOING THIS WILL RESET YOUR') tempmenu.addline('FEEDING TYPE. YOU WILL NOT BE') tempmenu.addline('REIMBURSED FOR THE LOST DNA!') tempmenu.addline('ENTER "%s" in console'%foodCommand) tempmenu.send(userid) if choice == 8: tempmenu = popuplib.create('tempmenu') tempmenu.addline(':*SPORE* Reset Abilities Menu:') tempmenu.addline('::::::::::::::::::::') tempmenu.addline('CAUTION: DOING THIS WILL DELETE YOUR') tempmenu.addline('ABILITIES AND CURRENT DNA') tempmenu.addline('You will get 100 DNA the next time you spawn') tempmenu.addline('ENTER "%s" in console'%resetAbilities) tempmenu.send(userid) def playerDisplay(userid, choice, popupname): tempstats = players[playerlib.uniqueid(userid)] statmenu1 = popuplib.create('stat1menu') statmenu1.addline(':*SPORE* Stat Menu:') statmenu1.addline(':::::::::::::::::::') statmenu1.addline(':%s\'s Stats:'%es.getplayername(choice)) statmenu1.addline('DNA - %s'%str(float(tempstats['DNA'])).partition('.')[0]) statmenu1.addline('Sight - %s/1 * Hearing - %s/1 * Smell - %s/3'%(tempstats['Sight'], tempstats['Hearing'], tempstats['Smell'])) if tempstats['Herbivore']: statmenu1.addline('Herbivore - %s/3'%tempstats['Herbivore']) if tempstats['Carnivore']: statmenu1.addline('Carnivore - %s/3'%tempstats['Carnivore']) if tempstats['Omnivore']: statmenu1.addline('Omnivore - %s/3'%tempstats['Omnivore']) statmenu1.addline('Arm - %s/4 * Leg - %s/4'%(tempstats['Arm'], tempstats['Leg'])) statmenu1.addline('Strike - %s/4 * Bite - %s/4 * Poison - %s/4 * Charge - %s/4'%(tempstats['Strike'], tempstats['Bite'], tempstats['Poison'], tempstats['Charge'])) statmenu1.addline('Size - %s/4 * Natural Armor - %s/4'%(tempstats['Size'], tempstats['Natural Armor'])) statmenu1.addline('Intelligent - %s/4 * Camouflage - %s/4'%(tempstats['Intelligent'],tempstats['Camouflage'])) statmenu1.addline('Charm - %s/4 * Sing - %s/4'%(tempstats['Charm'], tempstats['Sing'])) statmenu1.addline('Jump - %s/4 * Wings - %s/4'%(tempstats['Jump'], tempstats['Wings'])) statmenu1.addline(':::::::::::::::::::') statmenu1.addline('-> 0. Exit') statmenu1.send(userid) def skillmenuSelection(userid, choice, popupid): if int(choice) in range(1,8): tempstats = players[playerlib.uniqueid(userid)] tempmenu = popuplib.create('tempmenu') tempmenu.addline(':*SPORE* Info Menu:') tempmenu.addline(':::::::::::::::::::') if choice == 1: tempmenu.addline(':Sight:') tempmenu.addline('Allows you to see (No Blindness)') if not tempstats['Sight']: tempmenu.addline('0/1 - 40 DNA') tempmenu.addline('-> 1. Buy') tempmenu.menuselect = sightBuy if choice == 2: tempmenu.addline(':Hearing:') tempmenu.addline('Allows you to hear (No Deafness)') if not tempstats['Hearing']: tempmenu.addline('0/1 - 40 DNA') tempmenu.addline('-> 1. Buy') tempmenu.menuselect = hearingBuy if choice == 3: tempmenu.addline(':Smell:') tempmenu.addline('Allows you to smell enemies (See through walls)') tempmenu.addline('Level 0 - 0m') tempmenu.addline('Level 1 - 10m - 15 DNA') tempmenu.addline('Level 2 - 17m - 30 DNA') tempmenu.addline('Level 3 - 24m - 50 DNA') tempmenu.addline('%s/3'%tempstats['Smell']) if not tempstats['Smell'] > 2: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = smellBuy if choice == 4: tempmenu.addline(':Herbivore:') tempmenu.addline('Allows you to regenerate') tempmenu.addline('ONLY ONE FEEDING TYPE MAY BE SELECTED') tempmenu.addline('Level 0 - 0hp/s - 10 DNA') tempmenu.addline('Level 1 - 1hp/4s - 25 DNA') tempmenu.addline('Level 2 - 2hp/2s - 40 DNA') tempmenu.addline('Level 3 - 3hp/1s') tempmenu.addline('%s/3'%tempstats['Herbivore']) if not tempstats['Herbivore'] > 2: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = herbivoreBuy if choice == 5: tempmenu.addline(':Carnivore:') tempmenu.addline('Dealing damage heals you') tempmenu.addline('ONLY ONE FEEDING TYPE MAY BE SELECTED') tempmenu.addline('Level 0 - 0%') tempmenu.addline('Level 1 - 10% damage to health - 10 DNA') tempmenu.addline('Level 2 - 25% damage to health - 25 DNA') tempmenu.addline('Level 3 - 50% damage to health - 40 DNA') tempmenu.addline('%s/3'%tempstats['Carnivore']) if not tempstats['Carnivore'] > 2: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = carnivoreBuy if choice == 6: tempmenu.addline(':Omnivore:') tempmenu.addline('Gain traits from both Herbivore and Carnivore') tempmenu.addline('ONLY ONE FEEDING TYPE MAY BE SELECTED') tempmenu.addline('Level 0 - Nothing') tempmenu.addline('Level 1 - 1hp/3s - 15 DNA') tempmenu.addline('Level 2 - 25% damage to health - 30 DNA') tempmenu.addline('Level 3 - 3hp/2s - 40 DNA') tempmenu.addline('%s/3'%tempstats['Omnivore']) if not tempstats['Omnivore'] > 2: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = omnivoreBuy if choice == 7: tempmenu.addline(':Arm:') tempmenu.addline('Allows you to hold more weapons (increases slots)') tempmenu.addline('You may only hold 1 weapon at a time without arms') tempmenu.addline('You can drop the knife and grenade') tempmenu.addline('Smoke Grenades and the Bomb don\'t count') tempmenu.addline('Level 0 - 2 Weapons') tempmenu.addline('Level 1 - 3 Weapons - 5 DNA') tempmenu.addline('Level 2 - 4 Weapons - 10 DNA') tempmenu.addline('Level 3 - 5 Weapons - 15 DNA') tempmenu.addline('Level 4 - 6 Weapons - 20 DNA') tempmenu.addline('%s/4'%tempstats['Arm']) if not tempstats['Arm'] > 3: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = armBuy tempmenu.addline(':::::::::::::::::::') tempmenu.addline('-> 8. Evolve Menu 1') tempmenu.submenu(8, 'skillmenu') tempmenu.addline('-> 9. Main Menu') tempmenu.submenu(9, 'main') tempmenu.addline('0. Exit') tempmenu.send(userid) def skillmenu2Selection(userid, choice, popupid): if int(choice) in range(1,8): tempstats = players[playerlib.uniqueid(userid)] tempmenu = popuplib.create('tempmenu') tempmenu.addline(':*SPORE* Info Menu:') tempmenu.addline(':::::::::::::::::::') if choice == 1: tempmenu.addline(':Leg:') tempmenu.addline('Allows you to move more quickly') tempmenu.addline('Level 0 - 90%') tempmenu.addline('Level 1 - 100% - 5 DNA') tempmenu.addline('Level 2 - 104% - 15 DNA') tempmenu.addline('Level 3 - 108% - 25 DNA') tempmenu.addline('Level 4 - 114% - 40 DNA') tempmenu.addline('%s/4'%tempstats['Leg']) if not tempstats['Leg'] > 3: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = legBuy if choice == 2: tempmenu.addline(':Strike:') tempmenu.addline('Deals extra damage if you are at least') tempmenu.addline('20m away from your opponent') tempmenu.addline('Level 0 - 0%') tempmenu.addline('Level 1 - 10% - 5 DNA') tempmenu.addline('Level 2 - 15% - 15 DNA') tempmenu.addline('Level 3 - 20% Weapons - 25 DNA') tempmenu.addline('Level 4 - 25% Weapons - 40 DNA') tempmenu.addline('%s/4'%tempstats['Strike']) if not tempstats['Strike'] > 3: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = strikeBuy if choice == 3: tempmenu.addline(':Bite:') tempmenu.addline('Deals extra damage if you are within') tempmenu.addline('20m of your opponent') tempmenu.addline('Level 0 - 0%') tempmenu.addline('Level 1 - 10% - 5 DNA') tempmenu.addline('Level 2 - 15% - 15 DNA') tempmenu.addline('Level 3 - 20% Weapons - 25 DNA') tempmenu.addline('Level 4 - 25% Weapons - 40 DNA') tempmenu.addline('%s/4'%tempstats['Bite']) if not tempstats['Bite'] > 3: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = biteBuy if choice == 4: tempmenu.addline(':Poison:') tempmenu.addline('Deals damage after your initial attack') tempmenu.addline('Damage is a percent of damage initially dealt') tempmenu.addline('Poison ticks once every 3 seconds') tempmenu.addline('Level 0 - 0%') tempmenu.addline('Level 1 - 10%, 2 ticks - 5 DNA') tempmenu.addline('Level 2 - 15%, 2 ticks - 15 DNA') tempmenu.addline('Level 3 - 20%, 3 ticks - 25 DNA') tempmenu.addline('Level 4 - 25%, 4 ticks - 40 DNA') tempmenu.addline('%s/4'%tempstats['Poison']) if not tempstats['Poison'] > 3: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = poisonBuy if choice == 5: tempmenu.addline(':Charge:') tempmenu.addline('Your attacks push your opponents back') tempmenu.addline('Level 0 - None') tempmenu.addline('Level 1 - 2% Chance - 10 DNA') tempmenu.addline('Level 2 - 3% Chance - 25 DNA') tempmenu.addline('Level 3 - 4% Chance - 40 DNA') tempmenu.addline('Level 4 - 6% Chance - 60 DNA') tempmenu.addline('%s/4'%tempstats['Charge']) if not tempstats['Charge'] > 3: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = chargeBuy if choice == 7: tempmenu.addline(':Natural Armor:') tempmenu.addline('Reduces amount of damage taken') tempmenu.addline('Does not stack - I.E. level 4 is 40%') tempmenu.addline('Level 0 - 0%') tempmenu.addline('Level 1 - 10% - 5 DNA') tempmenu.addline('Level 2 - 15% - 10 DNA') tempmenu.addline('Level 3 - 25% - 15 DNA') tempmenu.addline('Level 4 - 40% - 20 DNA') tempmenu.addline('%s/4'%tempstats['Natural Armor']) if not tempstats['Natural Armor'] > 3: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = armorBuy if choice == 6: tempmenu.addline(':Size:') tempmenu.addline('Increase in Size increases your health') tempmenu.addline('Does not stack - I.E. level 4 is 140hp') tempmenu.addline('Level 0 - +0hp') tempmenu.addline('Level 1 - +5hp - 5 DNA') tempmenu.addline('Level 2 - +10hp - 15 DNA') tempmenu.addline('Level 3 - +20hp - 25 DNA') tempmenu.addline('Level 4 - +40hp - 40 DNA') tempmenu.addline('%s/4'%tempstats['Size']) if not tempstats['Size'] > 3: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = sizeBuy tempmenu.addline(':::::::::::::::::::') tempmenu.addline('-> 8. Evolve Menu 2') tempmenu.submenu(8, 'skillmenu2') tempmenu.addline('-> 9. Main Menu') tempmenu.submenu(9, 'main') tempmenu.addline('0. Exit') tempmenu.send(userid) def skillmenu3Selection(userid, choice, popupid): if int(choice) in range(1,8): tempstats = players[playerlib.uniqueid(userid)] tempmenu = popuplib.create('tempmenu') tempmenu.addline(':*SPORE* Info Menu:') tempmenu.addline(':::::::::::::::::::') if choice == 1: tempmenu.addline(':Camouflage:') tempmenu.addline('You appear translucent') tempmenu.addline('Level 0 - 100% Visible') tempmenu.addline('Level 1 - 27% Visible - 10 DNA') tempmenu.addline('Level 2 - 20% Visible - 25 DNA') tempmenu.addline('Level 3 - 14% Visible - 40 DNA') tempmenu.addline('Level 4 - 8% Visible - 60 DNA') tempmenu.addline('%s/4'%tempstats['Camouflage']) if not tempstats['Camouflage'] > 3: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = CamouflageBuy if choice == 2: tempmenu.addline(':Charm:') tempmenu.addline('When you become attacked, you have') tempmenu.addline('a chance to blind opponents (flashbang') tempmenu.addline('effect) for 1 second') tempmenu.addline('Level 0 - 0% Chance') tempmenu.addline('Level 1 - 1% Chance - 10 DNA') tempmenu.addline('Level 2 - 2% Chance - 25 DNA') tempmenu.addline('Level 3 - 3% Chance - 40 DNA') tempmenu.addline('Level 4 - 5% Chance - 60 DNA') tempmenu.addline('%s/4'%tempstats['Charm']) if not tempstats['Charm'] > 3: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = charmBuy if choice == 3: tempmenu.addline(':Sing:') tempmenu.addline('You regenerate money every second') tempmenu.addline('Level 0 - $0') tempmenu.addline('Level 1 - $50 - 10 DNA') tempmenu.addline('Level 2 - $60 - 25 DNA') tempmenu.addline('Level 3 - $75 - 40 DNA') tempmenu.addline('Level 4 - $100 - 60 DNA') tempmenu.addline('%s/4'%tempstats['Sing']) if not tempstats['Sing'] > 3: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = singBuy if choice == 4: tempmenu.addline(':Wings:') tempmenu.addline('You can fly with the press of a button!') tempmenu.addline('"fly" (this is a console command you bind)') tempmenu.addline('You need to jump before you use fly') tempmenu.addline('Level 0 - No Flight') tempmenu.addline('Level 1 - 12 DNA') tempmenu.addline('Level 2 - 25 DNA') tempmenu.addline('Level 3 - 40 DNA') tempmenu.addline('Level 4 - No jump required - 60 DNA') tempmenu.addline('%s/4'%tempstats['Wings']) if not tempstats['Wings'] > 3: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = wingsBuy if choice == 5: tempmenu.addline(':Jump:') tempmenu.addline('You can jump further and higher') tempmenu.addline('The height and distance depend on') tempmenu.addline('your level') tempmenu.addline('Level 0 - Normal Jump') tempmenu.addline('Level 1 - 10 DNA') tempmenu.addline('Level 2 - 25 DNA') tempmenu.addline('Level 3 - 40 DNA') tempmenu.addline('Level 4 - 60 DNA') tempmenu.addline('%s/4'%tempstats['Jump']) if not tempstats['Jump'] > 3: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = jumpBuy if choice == 6: tempmenu.addline(':Intelligent:') tempmenu.addline('Increases the rate at which you gain DNA') tempmenu.addline('Does not stack - I.E. level 4 is 40%') tempmenu.addline('Level 0 - 0%') tempmenu.addline('Level 1 - 10% - 10 DNA') tempmenu.addline('Level 2 - 25% - 25 DNA') tempmenu.addline('Level 3 - 33% - 40 DNA') tempmenu.addline('Level 4 - 40% - 60 DNA') tempmenu.addline('%s/4'%tempstats['Intelligent']) if not tempstats['Intelligent'] > 3: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = intelligentBuy tempmenu.addline(':::::::::::::::::::') tempmenu.addline('-> 8. Evolve Menu 3') tempmenu.submenu(8, 'skillmenu3') tempmenu.addline('-> 9. Main Menu') tempmenu.submenu(9, 'main') tempmenu.addline('0. Exit') tempmenu.send(userid) def sightBuy(userid, choice, popupid): global players if choice == 1: if not int(players[playerlib.uniqueid(userid)]['Sight']): if players[playerlib.uniqueid(userid)]['DNA'] >= 40: players[playerlib.uniqueid(userid)]['Sight'] = 1 players[playerlib.uniqueid(userid)]['DNA'] -= 40 sporeTell(userid, ['You just upgraded your', '#lightgreen', 'Sight']) es.server.queuecmd('est_playplayer %s npc/antlion/idle%s.wav 1'%(userid, random.randint(1,5))) else: sporeTell(userid, ['You don\'t have enough DNA']) else: sporeTell(userid, ['You have already maxed this ability']) def hearingBuy(userid, choice, popupid): global players if choice == 1: if not int(players[playerlib.uniqueid(userid)]['Hearing']): if players[playerlib.uniqueid(userid)]['DNA'] >= 40: players[playerlib.uniqueid(userid)]['Hearing'] = 1 players[playerlib.uniqueid(userid)]['DNA'] -= 40 sporeTell(userid, ['You just upgraded your', '#lightgreen', 'Hearing']) es.server.queuecmd('est_playplayer %s npc/antlion/idle%s.wav 1'%(userid, random.randint(1,5))) else: sporeTell(userid, ['You don\'t have enough DNA']) else: sporeTell(userid, ['You have already maxed this ability']) def smellBuy(userid, choice, popupid): global players if choice == 1: if not int(players[playerlib.uniqueid(userid)]['Smell']): cost = 15 if int(players[playerlib.uniqueid(userid)]['Smell']) == 1: cost = 30 if int(players[playerlib.uniqueid(userid)]['Smell']) == 2: cost = 50 if int(players[playerlib.uniqueid(userid)]['Smell']) == 3: sporeTell(userid, ['You have already maxed this ability']) return 0 if players[playerlib.uniqueid(userid)]['DNA'] >= cost: players[playerlib.uniqueid(userid)]['Smell'] += 1 players[playerlib.uniqueid(userid)]['DNA'] -= cost sporeTell(userid, ['You just upgraded your', '#lightgreen', 'Smell']) es.server.queuecmd('est_playplayer %s npc/antlion/idle%s.wav 1'%(userid, random.randint(1,5))) else: sporeTell(userid, ['You don\'t have enough DNA for this ability']) def herbivoreBuy(userid, choice, popupid): global players if choice == 1: if not int(players[playerlib.uniqueid(userid)]['Carnivore']) and not int(players[playerlib.uniqueid(userid)]['Omnivore']): if not int(players[playerlib.uniqueid(userid)]['Herbivore']): cost = 10 if int(players[playerlib.uniqueid(userid)]['Herbivore']) == 1: cost = 25 if int(players[playerlib.uniqueid(userid)]['Herbivore']) == 2: cost = 40 if int(players[playerlib.uniqueid(userid)]['Herbivore']) == 3: sporeTell(userid, ['You have already maxed this ability']) return 0 if players[playerlib.uniqueid(userid)]['DNA'] >= cost: players[playerlib.uniqueid(userid)]['Herbivore'] += 1 players[playerlib.uniqueid(userid)]['DNA'] -= cost sporeTell(userid, ['You just upgraded your', '#lightgreen', 'Herbivore']) es.server.queuecmd('est_playplayer %s npc/antlion/idle%s.wav 1'%(userid, random.randint(1,5))) else: sporeTell(userid, ['You don\'t have enough DNA for this ability']) else: sporeTell(userid, ['You already selected a feeding type']) def carnivoreBuy(userid, choice, popupid): global players if choice == 1: if not int(players[playerlib.uniqueid(userid)]['Herbivore']) and not int(players[playerlib.uniqueid(userid)]['Omnivore']): if not int(players[playerlib.uniqueid(userid)]['Carnivore']): cost = 10 if int(players[playerlib.uniqueid(userid)]['Carnivore']) == 1: cost = 25 if int(players[playerlib.uniqueid(userid)]['Carnivore']) == 2: cost = 40 if int(players[playerlib.uniqueid(userid)]['Carnivore']) == 3: sporeTell(userid, ['You have already maxed this ability']) return 0 if players[playerlib.uniqueid(userid)]['DNA'] >= cost: players[playerlib.uniqueid(userid)]['Carnivore'] += 1 players[playerlib.uniqueid(userid)]['DNA'] -= cost sporeTell(userid, ['You just upgraded your', '#lightgreen', 'Carnivore']) es.server.queuecmd('est_playplayer %s npc/antlion/idle%s.wav 1'%(userid, random.randint(1,5))) else: sporeTell(userid, ['You don\'t have enough DNA for this ability']) else: sporeTell(userid, ['You already selected a feeding type']) def omnivoreBuy(userid, choice, popupid): global players if choice == 1: if not int(players[playerlib.uniqueid(userid)]['Carnivore']) and not int(players[playerlib.uniqueid(userid)]['Herbivore']): if not int(players[playerlib.uniqueid(userid)]['Omnivore']): cost = 15 if int(players[playerlib.uniqueid(userid)]['Omnivore']) == 1: cost = 30 if int(players[playerlib.uniqueid(userid)]['Omnivore']) == 2: cost = 50 if int(players[playerlib.uniqueid(userid)]['Omnivore']) == 3: sporeTell(userid, ['You have already maxed this ability']) return 0 if players[playerlib.uniqueid(userid)]['DNA'] >= cost: players[playerlib.uniqueid(userid)]['Omnivore'] += 1 players[playerlib.uniqueid(userid)]['DNA'] -= cost sporeTell(userid, ['You just upgraded your', '#lightgreen', 'Omnivore']) es.server.queuecmd('est_playplayer %s npc/antlion/idle%s.wav 1'%(userid, random.randint(1,5))) else: sporeTell(userid, ['You don\'t have enough DNA for this ability']) else: sporeTell(userid, ['You already selected a feeding type']) def armBuy(userid, choice, popupid): global players if choice == 1: if not int(players[playerlib.uniqueid(userid)]['Arm']): cost = 5 if int(players[playerlib.uniqueid(userid)]['Arm']) == 1: cost = 10 if int(players[playerlib.uniqueid(userid)]['Arm']) == 2: cost = 15 if int(players[playerlib.uniqueid(userid)]['Arm']) == 3: cost = 20 if int(players[playerlib.uniqueid(userid)]['Arm']) == 4: sporeTell(userid, ['You have already maxed this ability']) return 0 if players[playerlib.uniqueid(userid)]['DNA'] >= cost: players[playerlib.uniqueid(userid)]['Arm'] += 1 players[playerlib.uniqueid(userid)]['DNA'] -= cost sporeTell(userid, ['You just upgraded your', '#lightgreen', 'Arms']) es.server.queuecmd('est_playplayer %s npc/antlion/idle%s.wav 1'%(userid, random.randint(1,5))) else: sporeTell(userid, ['You don\'t have enough DNA for this ability']) def legBuy(userid, choice, popupid): global players if choice == 1: if not int(players[playerlib.uniqueid(userid)]['Leg']): cost = 5 if int(players[playerlib.uniqueid(userid)]['Leg']) == 1: cost = 15 if int(players[playerlib.uniqueid(userid)]['Leg']) == 2: cost = 25 if int(players[playerlib.uniqueid(userid)]['Leg']) == 3: cost = 40 if int(players[playerlib.uniqueid(userid)]['Leg']) == 4: sporeTell(userid, ['You have already maxed this ability']) return 0 if players[playerlib.uniqueid(userid)]['DNA'] >= cost: players[playerlib.uniqueid(userid)]['Leg'] += 1 players[playerlib.uniqueid(userid)]['DNA'] -= cost sporeTell(userid, ['You just upgraded your', '#lightgreen', 'Legs']) es.server.queuecmd('est_playplayer %s npc/antlion/idle%s.wav 1'%(userid, random.randint(1,5))) else: sporeTell(userid, ['You don\'t have enough DNA for this ability']) def strikeBuy(userid, choice, popupid): global players if choice == 1: if not int(players[playerlib.uniqueid(userid)]['Strike']): cost = 5 if int(players[playerlib.uniqueid(userid)]['Strike']) == 1: cost = 15 if int(players[playerlib.uniqueid(userid)]['Strike']) == 2: cost = 25 if int(players[playerlib.uniqueid(userid)]['Strike']) == 3: cost = 40 if int(players[playerlib.uniqueid(userid)]['Strike']) == 4: sporeTell(userid, ['You have already maxed this ability']) return 0 if players[playerlib.uniqueid(userid)]['DNA'] >= cost: players[playerlib.uniqueid(userid)]['Strike'] += 1 players[playerlib.uniqueid(userid)]['DNA'] -= cost sporeTell(userid, ['You just upgraded your', '#lightgreen', 'Strike']) es.server.queuecmd('est_playplayer %s npc/antlion/idle%s.wav 1'%(userid, random.randint(1,5))) else: sporeTell(userid, ['You don\'t have enough DNA for this ability']) def biteBuy(userid, choice, popupid): global players if choice == 1: if not int(players[playerlib.uniqueid(userid)]['Bite']): cost = 5 if int(players[playerlib.uniqueid(userid)]['Bite']) == 1: cost = 15 if int(players[playerlib.uniqueid(userid)]['Bite']) == 2: cost = 25 if int(players[playerlib.uniqueid(userid)]['Bite']) == 3: cost = 40 if int(players[playerlib.uniqueid(userid)]['Bite']) == 4: sporeTell(userid, ['You have already maxed this ability']) return 0 if players[playerlib.uniqueid(userid)]['DNA'] >= cost: players[playerlib.uniqueid(userid)]['Bite'] += 1 players[playerlib.uniqueid(userid)]['DNA'] -= cost sporeTell(userid, ['You just upgraded your', '#lightgreen', 'Bite']) es.server.queuecmd('est_playplayer %s npc/antlion/idle%s.wav 1'%(userid, random.randint(1,5))) else: sporeTell(userid, ['You don\'t have enough DNA for this ability']) def poisonBuy(userid, choice, popupid): global players if choice == 1: if not int(players[playerlib.uniqueid(userid)]['Poison']): cost = 5 if int(players[playerlib.uniqueid(userid)]['Poison']) == 1: cost = 15 if int(players[playerlib.uniqueid(userid)]['Poison']) == 2: cost = 25 if int(players[playerlib.uniqueid(userid)]['Poison']) == 3: cost = 40 if int(players[playerlib.uniqueid(userid)]['Poison']) == 4: sporeTell(userid, ['You have already maxed this ability']) return 0 if players[playerlib.uniqueid(userid)]['DNA'] >= cost: players[playerlib.uniqueid(userid)]['Poison'] += 1 players[playerlib.uniqueid(userid)]['DNA'] -= cost sporeTell(userid, ['You just upgraded your', '#lightgreen', 'Poison']) es.server.queuecmd('est_playplayer %s npc/antlion/idle%s.wav 1'%(userid, random.randint(1,5))) else: sporeTell(userid, ['You don\'t have enough DNA for this ability']) def armorBuy(userid, choice, popupid): global players if choice == 1: if not int(players[playerlib.uniqueid(userid)]['Natural Armor']): cost = 5 if int(players[playerlib.uniqueid(userid)]['Natural Armor']) == 1: cost = 10 if int(players[playerlib.uniqueid(userid)]['Natural Armor']) == 2: cost = 15 if int(players[playerlib.uniqueid(userid)]['Natural Armor']) == 3: cost = 20 if int(players[playerlib.uniqueid(userid)]['Natural Armor']) == 4: sporeTell(userid, ['You have already maxed this ability']) return 0 if players[playerlib.uniqueid(userid)]['DNA'] >= cost: players[playerlib.uniqueid(userid)]['Natural Armor'] += 1 players[playerlib.uniqueid(userid)]['DNA'] -= cost sporeTell(userid, ['You just upgraded your', '#lightgreen', 'Natural Armor']) es.server.queuecmd('est_playplayer %s npc/antlion/idle%s.wav 1'%(userid, random.randint(1,5))) else: sporeTell(userid, ['You don\'t have enough DNA for this ability']) def sizeBuy(userid, choice, popupid): global players if choice == 1: if not int(players[playerlib.uniqueid(userid)]['Size']): cost = 5 if int(players[playerlib.uniqueid(userid)]['Size']) == 1: cost = 15 if int(players[playerlib.uniqueid(userid)]['Size']) == 2: cost = 25 if int(players[playerlib.uniqueid(userid)]['Size']) == 3: cost = 40 if int(players[playerlib.uniqueid(userid)]['Size']) == 4: sporeTell(userid, ['You have already maxed this ability']) return 0 if players[playerlib.uniqueid(userid)]['DNA'] >= cost: players[playerlib.uniqueid(userid)]['Size'] += 1 players[playerlib.uniqueid(userid)]['DNA'] -= cost sporeTell(userid, ['You just upgraded your', '#lightgreen', 'Size']) es.server.queuecmd('est_playplayer %s npc/antlion/idle%s.wav 1'%(userid, random.randint(1,5))) else: sporeTell(userid, ['You don\'t have enough DNA for this ability']) def intelligentBuy(userid, choice, popupid): global players if choice == 1: if not int(players[playerlib.uniqueid(userid)]['Intelligent']): cost = 10 if int(players[playerlib.uniqueid(userid)]['Intelligent']) == 1: cost = 25 if int(players[playerlib.uniqueid(userid)]['Intelligent']) == 2: cost = 40 if int(players[playerlib.uniqueid(userid)]['Intelligent']) == 3: cost = 60 if int(players[playerlib.uniqueid(userid)]['Intelligent']) == 4: sporeTell(userid, ['You have already maxed this ability']) return 0 if players[playerlib.uniqueid(userid)]['DNA'] >= cost: players[playerlib.uniqueid(userid)]['Intelligent'] += 1 players[playerlib.uniqueid(userid)]['DNA'] -= cost sporeTell(userid, ['You just upgraded your', '#lightgreen', 'Intellect']) es.server.queuecmd('est_playplayer %s npc/antlion/idle%s.wav 1'%(userid, random.randint(1,5))) else: sporeTell(userid, ['You don\'t have enough DNA for this ability']) def CamouflageBuy(userid, choice, popupid): global players if choice == 1: if not int(players[playerlib.uniqueid(userid)]['Camouflage']): cost = 10 if int(players[playerlib.uniqueid(userid)]['Camouflage']) == 1: cost = 25 if int(players[playerlib.uniqueid(userid)]['Camouflage']) == 2: cost = 40 if int(players[playerlib.uniqueid(userid)]['Camouflage']) == 3: cost = 60 if int(players[playerlib.uniqueid(userid)]['Camouflage']) == 4: sporeTell(userid, ['You have already maxed this ability']) return 0 if players[playerlib.uniqueid(userid)]['DNA'] >= cost: players[playerlib.uniqueid(userid)]['Camouflage'] += 1 players[playerlib.uniqueid(userid)]['DNA'] -= cost sporeTell(userid, ['You just upgraded your', '#lightgreen', 'Camouflage']) es.server.queuecmd('est_playplayer %s npc/antlion/idle%s.wav 1'%(userid, random.randint(1,5))) else: sporeTell(userid, ['You don\'t have enough DNA for this ability']) def charmBuy(userid, choice, popupid): global players if choice == 1: if not int(players[playerlib.uniqueid(userid)]['Charm']): cost = 10 if int(players[playerlib.uniqueid(userid)]['Charm']) == 1: cost = 25 if int(players[playerlib.uniqueid(userid)]['Charm']) == 2: cost = 40 if int(players[playerlib.uniqueid(userid)]['Charm']) == 3: cost = 60 if int(players[playerlib.uniqueid(userid)]['Charm']) == 4: sporeTell(userid, ['You have already maxed this ability']) return 0 if players[playerlib.uniqueid(userid)]['DNA'] >= cost: players[playerlib.uniqueid(userid)]['Charm'] += 1 players[playerlib.uniqueid(userid)]['DNA'] -= cost sporeTell(userid, ['You just upgraded your', '#lightgreen', 'Charm']) es.server.queuecmd('est_playplayer %s npc/antlion/idle%s.wav 1'%(userid, random.randint(1,5))) else: sporeTell(userid, ['You don\'t have enough DNA for this ability']) def singBuy(userid, choice, popupid): global players if choice == 1: if not int(players[playerlib.uniqueid(userid)]['Sing']): cost = 10 if int(players[playerlib.uniqueid(userid)]['Sing']) == 1: cost = 25 if int(players[playerlib.uniqueid(userid)]['Sing']) == 2: cost = 40 if int(players[playerlib.uniqueid(userid)]['Sing']) == 3: cost = 60 if int(players[playerlib.uniqueid(userid)]['Sing']) == 4: sporeTell(userid, ['You have already maxed this ability']) return 0 if players[playerlib.uniqueid(userid)]['DNA'] >= cost: players[playerlib.uniqueid(userid)]['Sing'] += 1 players[playerlib.uniqueid(userid)]['DNA'] -= cost sporeTell(userid, ['You just upgraded your', '#lightgreen', 'Sing']) es.server.queuecmd('est_playplayer %s npc/antlion/idle%s.wav 1'%(userid, random.randint(1,5))) else: sporeTell(userid, ['You don\'t have enough DNA for this ability']) def wingsBuy(userid, choice, popupid): global players if choice == 1: if not int(players[playerlib.uniqueid(userid)]['Wings']): cost = 10 if int(players[playerlib.uniqueid(userid)]['Wings']) == 1: cost = 25 if int(players[playerlib.uniqueid(userid)]['Wings']) == 2: cost = 40 if int(players[playerlib.uniqueid(userid)]['Wings']) == 3: cost = 60 if int(players[playerlib.uniqueid(userid)]['Wings']) == 4: sporeTell(userid, ['You have already maxed this ability']) return 0 if players[playerlib.uniqueid(userid)]['DNA'] >= cost: players[playerlib.uniqueid(userid)]['Wings'] += 1 players[playerlib.uniqueid(userid)]['DNA'] -= cost sporeTell(userid, ['You just upgraded your', '#lightgreen', 'Wings']) es.server.queuecmd('est_playplayer %s npc/antlion/idle%s.wav 1'%(userid, random.randint(1,5))) else: sporeTell(userid, ['You don\'t have enough DNA for this ability']) def jumpBuy(userid, choice, popupid): global players if choice == 1: if not int(players[playerlib.uniqueid(userid)]['Jump']): cost = 10 if int(players[playerlib.uniqueid(userid)]['Jump']) == 1: cost = 25 if int(players[playerlib.uniqueid(userid)]['Jump']) == 2: cost = 40 if int(players[playerlib.uniqueid(userid)]['Jump']) == 3: cost = 60 if int(players[playerlib.uniqueid(userid)]['Jump']) == 4: sporeTell(userid, ['You have already maxed this ability']) return 0 if players[playerlib.uniqueid(userid)]['DNA'] >= cost: players[playerlib.uniqueid(userid)]['Jump'] += 1 players[playerlib.uniqueid(userid)]['DNA'] -= cost sporeTell(userid, ['You just upgraded your', '#lightgreen', 'Jump']) es.server.queuecmd('est_playplayer %s npc/antlion/idle%s.wav 1'%(userid, random.randint(1,5))) else: sporeTell(userid, ['You don\'t have enough DNA for this ability']) def chargeBuy(userid, choice, popupid): global players if choice == 1: if not int(players[playerlib.uniqueid(userid)]['Charge']): cost = 10 if int(players[playerlib.uniqueid(userid)]['Charge']) == 1: cost = 25 if int(players[playerlib.uniqueid(userid)]['Charge']) == 2: cost = 40 if int(players[playerlib.uniqueid(userid)]['Charge']) == 3: cost = 60 if int(players[playerlib.uniqueid(userid)]['Charge']) == 4: sporeTell(userid, ['You have already maxed this ability']) return 0 if players[playerlib.uniqueid(userid)]['DNA'] >= cost: players[playerlib.uniqueid(userid)]['Charge'] += 1 players[playerlib.uniqueid(userid)]['DNA'] -= cost sporeTell(userid, ['You just upgraded your', '#lightgreen', 'Charge']) es.server.queuecmd('est_playplayer %s npc/antlion/idle%s.wav 1'%(userid, random.randint(1,5))) else: sporeTell(userid, ['You don\'t have enough DNA for this ability']) def set_round_started(): global round_started round_started = 1 def round_start(ev): global round_started round_started = 0 gamethread.delayed(es.ServerVar('mp_freezetime'), set_round_started) gamethread.cancelDelayed('spore_loops') smellLoop() blindLoop() regenHerbivoreOne() regenHerbivoreTwo() regenHerbivoreThree() regenOmnivoreOne() regenOmnivoreThree() regenSing() es.server.queuecmd('est_allowadvanceddrop 1') def item_pickup(ev): handle = es.getplayerhandle(ev['userid']) x = 0 for weapon in weaponlib.getWeaponList('#all'): if weapon != 'weapon_c4' and weapon != 'weapon_smokegrenade': for index in weapon.indexlist: if es.getindexprop(index, 'CBaseEntity.m_hOwnerEntity') == handle: x += 1 break if playerlib.uniqueid(ev['userid']) in players: if x > int(players[playerlib.uniqueid(ev['userid'])]['Arm']) + 2: es.server.queuecmd('est_dropweapon %s %s'%(ev['userid'], ev['item'])) sporeTell(ev['userid'], ['You don\'t have enough arms to carry that weapon!']) def setBotSkills(): global players players['BOT'] = { 'DNA': 0, 'Sight':0, 'Hearing':0, 'Smell':0, 'Herbivore':0, 'Carnivore':0, 'Omnivore':0, 'Arm':4, 'Leg':1, 'Strike':2, 'Bite':2, 'Poison':0, 'Size':0, 'Natural Armor':0, 'Camouflage':0, 'Intelligent':0, 'Charm': 0, 'Sing': 4, 'Wings': 0, 'Charge': 0, 'Jump': 0 } def player_spawn(ev): global players, unlocks, main try: blank = players[playerlib.uniqueid(ev['userid'])] deBug('Players stats') except KeyError: deBug('Player Not Found: %s %s'%(es.getplayername(ev['userid']), ev['userid'])) deBug('Adding Player') players[playerlib.uniqueid(ev['userid'])] = { 'Sight':0, 'Hearing':0, 'Smell':0, 'Herbivore':0, 'Carnivore':0, 'Omnivore':0, 'Arm':0, 'Leg':0, 'Strike':0, 'Bite':0, 'Poison':0, 'Size':0, 'Natural Armor':0, 'Camouflage':0, 'Intelligent':0, 'Charm': 0, 'Sing': 0, 'Wings': 0, 'Charge': 0, 'Jump': 0 } players[playerlib.uniqueid(ev['userid'])]['DNA'] = 100 unlocks[playerlib.uniqueid(ev['userid'])] = {} for achievement in achievement_list: unlocks[playerlib.uniqueid(ev['userid'])]['%s'%achievement] = 0 if not int(players[playerlib.uniqueid(ev['userid'])]['Sight']): sporeTell(ev['userid'], ['You are partially blind because you didn\'t evolve', '#lightgreen', 'Sight']) if not int(players[playerlib.uniqueid(ev['userid'])]['Hearing']): sporeTell(ev['userid'], ['You are partially deaf because you didn\'t evolve', '#lightgreen', 'Hearing']) if not int(players[playerlib.uniqueid(ev['userid'])]['Leg']): sporeTell(ev['userid'], ['You are partially slow because you didn\'t evolve', '#lightgreen', 'Legs']) if not int(players[playerlib.uniqueid(ev['userid'])]['Arm']): sporeTell(ev['userid'], ['You can\'t hold many weapons - you didn\'t evolve', '#lightgreen', 'Arms']) sporeTell(ev['userid'], ['You have', '#lightgreen', '%s DNA'%str(players[playerlib.uniqueid(ev['userid'])]['DNA']).partition('.')[0], '#default', 'to evolve with']) if not int(players[playerlib.uniqueid(ev['userid'])]['Hearing']): es.server.queuecmd('est_deafen %s %s 85 0 0'%(ev['userid'], int(es.ServerVar('mp_roundtime')) * 120)) speed = .9 if int(players[playerlib.uniqueid(ev['userid'])]['Leg']) == 1: speed = 1 if int(players[playerlib.uniqueid(ev['userid'])]['Leg']) == 2: speed = 1.04 if int(players[playerlib.uniqueid(ev['userid'])]['Leg']) == 3: speed = 1.08 if int(players[playerlib.uniqueid(ev['userid'])]['Leg']) == 4: speed = 1.14 es.server.queuecmd('est_speed %s %s'%(ev['userid'], speed)) if int(players[playerlib.uniqueid(ev['userid'])]['Camouflage']): level = int(players[playerlib.uniqueid(ev['userid'])]['Camouflage']) if level == 1: color = 70 if level == 2: color = 50 if level == 3: color = 35 if level == 4: color = 20 es.server.queuecmd('est_setplayercolor %s 255 255 255 %s'%(ev['userid'], color)) if int(players[playerlib.uniqueid(ev['userid'])]['Size']) == 1: es.setplayerprop(ev['userid'], "CBasePlayer.m_iHealth", 105) if int(players[playerlib.uniqueid(ev['userid'])]['Size']) == 2: es.setplayerprop(ev['userid'], "CBasePlayer.m_iHealth", 110) if int(players[playerlib.uniqueid(ev['userid'])]['Size']) == 3: es.setplayerprop(ev['userid'], "CBasePlayer.m_iHealth", 120) if int(players[playerlib.uniqueid(ev['userid'])]['Size']) == 4: es.setplayerprop(ev['userid'], "CBasePlayer.m_iHealth", 140) deBug('Test') players[playerlib.uniqueid(ev['userid'])]['DNA Gained'] = 0 es.server.queuecmd('est_hsay %s Open the *SPORE menu by typing "menu"'%ev['userid']) if int(players[playerlib.uniqueid(ev['userid'])]['Poison']) == 4: if int(players[playerlib.uniqueid(ev['userid'])]['Jump']) == 4: if int(players[playerlib.uniqueid(ev['userid'])]['Leg']) == 4: if int(unlocks[playerlib.uniqueid(ev['userid'])]['Spider']) != 1: unlocks[playerlib.uniqueid(ev['userid'])]['Spider'] = 1 sporeMsg('%s has unlocked the Spider achievement!'%ev['es_username']) if int(players[playerlib.uniqueid(ev['userid'])]['Intelligent']) == 4: if int(players[playerlib.uniqueid(ev['userid'])]['Camouflage']) == 4: if int(unlocks[playerlib.uniqueid(ev['userid'])]['Fox']) != 1: unlocks[playerlib.uniqueid(ev['userid'])]['Fox'] = 1 sporeMsg('%s has unlocked the Fox achievement!'%ev['es_username']) if int(players[playerlib.uniqueid(ev['userid'])]['Intelligent']) == 4: if int(players[playerlib.uniqueid(ev['userid'])]['Wings']) == 4: if int(unlocks[playerlib.uniqueid(ev['userid'])]['Owl']) != 1: unlocks[playerlib.uniqueid(ev['userid'])]['Owl'] = 1 sporeMsg('%s has unlocked the Owl achievement!'%ev['es_username']) if int(players[playerlib.uniqueid(ev['userid'])]['Strike']) == 4: if int(players[playerlib.uniqueid(ev['userid'])]['Poison']) == 4: if int(unlocks[playerlib.uniqueid(ev['userid'])]['Scorpion']) != 1: unlocks[playerlib.uniqueid(ev['userid'])]['Scorpion'] = 1 sporeMsg('%s has unlocked the Scorpion achievement!'%ev['es_username']) if int(players[playerlib.uniqueid(ev['userid'])]['Bite']) == 4: if int(players[playerlib.uniqueid(ev['userid'])]['Leg']) == 4: if int(unlocks[playerlib.uniqueid(ev['userid'])]['Ant']) != 1: unlocks[playerlib.uniqueid(ev['userid'])]['Ant'] = 1 sporeMsg('%s has unlocked the Ant achievement!'%ev['es_username']) if int(players[playerlib.uniqueid(ev['userid'])]['Wings']) == 4: if int(players[playerlib.uniqueid(ev['userid'])]['Sing']) == 4: if int(unlocks[playerlib.uniqueid(ev['userid'])]['Mockingbird']) != 1: unlocks[playerlib.uniqueid(ev['userid'])]['Mockingbird'] = 1 sporeMsg('%s has unlocked the Mockingbird achievement!'%ev['es_username']) if int(players[playerlib.uniqueid(ev['userid'])]['Size']) == 4: if int(players[playerlib.uniqueid(ev['userid'])]['Carnivore']) == 3: if int(unlocks[playerlib.uniqueid(ev['userid'])]['T-Rex']) != 1: unlocks[playerlib.uniqueid(ev['userid'])]['T-Rex'] = 1 sporeMsg('%s has unlocked the T-Rex achievement!'%ev['es_username']) if int(players[playerlib.uniqueid(ev['userid'])]['Natural Armor']) == 4: if int(players[playerlib.uniqueid(ev['userid'])]['Bite']) == 4: if int(unlocks[playerlib.uniqueid(ev['userid'])]['Turtle']) != 1: unlocks[playerlib.uniqueid(ev['userid'])]['Turtle'] = 1 sporeMsg('%s has unlocked the Turtle achievement!'%ev['es_username']) if int(players[playerlib.uniqueid(ev['userid'])]['Smell']) == 3: if int(players[playerlib.uniqueid(ev['userid'])]['Hearing']) == 1: if int(unlocks[playerlib.uniqueid(ev['userid'])]['Dog']) != 1: unlocks[playerlib.uniqueid(ev['userid'])]['Dog'] = 1 sporeMsg('%s has unlocked the Dog achievement!'%ev['es_username']) test = 0 for k,v in players[playerlib.uniqueid(ev['userid'])].iteritems(): if v == 0: test += 1 if test >= 20: gamethread.delayed(1.5, sporeTell, (ev['userid'], ['Welcome to Spore! I suggest you take the Sight and Hearing abilities. Open the menu by typing \'%s\''%menuCommand])) gamethread.delayed(1.5, main.send, ev['userid']) ''' def ReturnEV(variable): """ A little wrapper to set the Event Info in a pre event to return the value """ es.ServerVar('wcs_temp').set(0) es.server.cmd('est_geteventinfo wcs_temp %s'%variable) try: return int(es.ServerVar('wcs_temp')) except: return str(es.ServerVar('wcs_temp')) def SetEV(variable, value): """ A little wrapper to set the Event Info in a pre event to hold the value """ es.server.cmd('est_seteventinfo %s %s'%(variable, value)) ''' def prepHurt(ev): userid = ev['userid'] attacker = ev['attacker'] if attacker != 0 and attacker != '0': damage = ev['dmg_health'] health = es.getplayerprop(userid, 'CBasePlayer.m_iHealth') if int(players[playerlib.uniqueid(userid)]['Natural Armor']): level = int(players[playerlib.uniqueid(userid)]['Natural Armor']) deBug('Messing with health in prepHurt') if level == 1: damage_reduction = damage * .1 if level == 2: damage_reduction = damage * .15 if level == 3: damage_reduction = damage * .2 if level == 4: damage_reduction = damage * .25 es.setplayerprop(userid, "CBasePlayer.m_iHealth", health + damage_reduction) def player_hurt(ev): global players attacker = ev['attacker'] userid = ev['userid'] dmg = int(ev['dmg_health']) if not attacker: return 0 if playerlib.uniqueid(userid) not in players: return 0 if es.getplayerteam(attacker) != es.getplayerteam(userid): dnaGained = dmg * es.ServerVar('spore_dnaGained') if int(players[playerlib.uniqueid(attacker)]['Intelligent']): level = int(players[playerlib.uniqueid(attacker)]['Intelligent']) if level == 1: dnaGained *= .1 if level == 2: dnaGained *= .25 if level == 3: dnaGained *= .33 if level == 4: dnaGained *= .4 players[playerlib.uniqueid(attacker)]['DNA'] += dnaGained players[playerlib.uniqueid(attacker)]['DNA Gained'] += dnaGained deBug('Intelligent block done') if int(players[playerlib.uniqueid(attacker)]['Carnivore']): maxhealth = 100 level = int(players[playerlib.uniqueid(attacker)]['Size']) if level == 1: maxhealth = 105 if level == 2: maxhealth = 110 if level == 3: maxhealth = 120 if level == 4: maxhealth = 140 deBug('Max health = %s'%maxhealth) level = int(players[playerlib.uniqueid(attacker)]['Carnivore']) if level == 1: heal = dmg * .1 if level == 2: heal = dmg * .25 if level == 3: heal = dmg * .5 deBug('Carnivore level = %s, Health healed = %s'%(level,heal)) if int(es.getplayerprop(attacker, "CBasePlayer.m_iHealth")) < maxhealth: es.setplayerprop(attacker, "CBasePlayer.m_iHealth", int(es.getplayerprop(attacker, "CBasePlayer.m_iHealth")) + heal) if int(es.getplayerprop(attacker, "CBasePlayer.m_iHealth")) > maxhealth: es.setplayerprop(attacker, "CBasePlayer.m_iHealth", maxhealth) if int(players[playerlib.uniqueid(userid)]['Omnivore']) >= 2: if not int(players[playerlib.uniqueid(userid)]['Size']): maxhealth = 100 else: level = int(players[playerlib.uniqueid(userid)]['Size']) if level == 1: maxhealth = 105 if level == 2: maxhealth = 110 if level == 3: maxhealth = 120 if level == 4: maxhealth = 140 heal = dmg * .25 if int(es.getplayerprop(attacker, "CBasePlayer.m_iHealth")) < maxhealth: es.setplayerprop(attacker, "CBasePlayer.m_iHealth", int(es.getplayerprop(attacker, "CBasePlayer.m_iHealth")) + heal) if int(es.getplayerprop(attacker, "CBasePlayer.m_iHealth")) > maxhealth: es.setplayerprop(attacker, "CBasePlayer.m_iHealth", maxhealth) if int(players[playerlib.uniqueid(userid)]['Bite']): x,y,z = es.getplayerlocation(userid) x1, y1, z1 = es.getplayerlocation(attacker) if math.sqrt(math.pow((x-x1), 2) + math.pow((y-y1), 2) + math.pow((z-z1), 2)) < 600: level = int(players[playerlib.uniqueid(userid)]['Bite']) if level == 1: damage = dmg * .1 if level == 2: damage = dmg * .15 if level == 3: damage = dmg * .2 if level == 4: damage = dmg * .25 deBug('Bite Block done') Damage(userid, attacker, damage) if int(players[playerlib.uniqueid(userid)]['Strike']): x,y,z = es.getplayerlocation(userid) x1, y1, z1 = es.getplayerlocation(attacker) if math.sqrt(math.pow((x-x1), 2) + math.pow((y-y1), 2) + math.pow((z-z1), 2)) >= 600: level = int(players[playerlib.uniqueid(userid)]['Strike']) if level == 1: damage = dmg * .1 if level == 2: damage = dmg * .15 if level == 3: damage = dmg * .2 if level == 4: damage = dmg * .25 Damage(userid, attacker, damage) deBug('Strike block done') if int(players[playerlib.uniqueid(userid)]['Poison']): if int(players[playerlib.uniqueid(userid)]['Poison']) == 1: gamethread.delayedname(3, 'spore_loops', Damage, (userid, attacker, dmg * .1)) gamethread.delayedname(6, 'spore_loops', Damage, (userid, attacker, dmg * .1)) if int(players[playerlib.uniqueid(userid)]['Poison']) == 2: gamethread.delayedname(3, 'spore_loops', Damage, (userid, attacker, dmg * .15)) gamethread.delayedname(6, 'spore_loops', Damage, (userid, attacker, dmg * .15)) if int(players[playerlib.uniqueid(userid)]['Poison']) == 3: gamethread.delayedname(3, 'spore_loops', Damage, (userid, attacker, dmg * .20)) gamethread.delayedname(6, 'spore_loops', Damage, (userid, attacker, dmg * .20)) gamethread.delayedname(9, 'spore_loops', Damage, (userid, attacker, dmg * .20)) if int(players[playerlib.uniqueid(userid)]['Poison']) == 4: gamethread.delayedname(3, 'spore_loops', Damage, (userid, attacker, dmg * .25)) gamethread.delayedname(6, 'spore_loops', Damage, (userid, attacker, dmg * .25)) gamethread.delayedname(9, 'spore_loops', Damage, (userid, attacker, dmg * .25)) gamethread.delayedname(12, 'spore_loops', Damage, (userid, attacker, dmg * .25)) if int(players[playerlib.uniqueid(userid)]['Charge']): level = int(players[playerlib.uniqueid(userid)]['Charge']) x = random.randint(1,100) if level == 1: chance = 2 if level == 2: chance = 3 if level == 3: chance = 4 if level == 4: chance = 6 if chance >= x: x, y, z = playerlib.getPlayer(attacker).get('viewvector') es.setplayerprop(userid, 'CBasePlayer.localdata.m_vecBaseVelocity', '%s,%s,%s'%(x * 400, y * 400, z * 400)) deBug('Charge block done') if int(players[playerlib.uniqueid(userid)]['Charm']) > 0: level = int(players[playerlib.uniqueid(userid)]['Charm']) x = random.randint(1,5) if level == 1: chance = 1 if level == 2: chance = 2 if level == 3: chance = 3 if level == 4: chance = 5 deBug('Chance - %s ; Random - %s'%(chance, x)) if chance >= x: es.setplayerprop(attacker, "CCSPlayer.m_flFlashMaxAlpha", 255) es.setplayerprop(attacker, "CCSPlayer.m_flFlashDuration", 3) deBug('Blinding %s'%es.getplayername(attacker)) def Damage(userid, attacker, damage): if es.getplayerprop(userid, 'CBasePlayer.m_iHealth') <= damage: es.server.queuecmd('damage %s %s 32 %s'%(userid, damage, attacker)) else: es.setplayerprop(userid, 'CBasePlayer.m_iHealth', es.getplayerprop(userid, 'CBasePlayer.m_iHealth')-damage) def blindLoop(): for userid in es.getUseridList(): if not int(players[playerlib.uniqueid(userid)]['Sight']): es.server.queuecmd('est_fade %s 0 1 1 0 0 0 225'%userid) gamethread.delayedname(.5, 'spore_loops', blindLoop) def smellLoop(): see_thru_walls_sprite = "effects/strider_bulge_dudv_dx60.vmt" for userid in es.getUseridList(): if not es.getplayerprop(userid, 'CBasePlayer.pl.deadflag'): if int(players[playerlib.uniqueid(userid)]['Smell']): smellLevel = int(players[playerlib.uniqueid(userid)]['Smell']) if smellLevel == 1: allowed = 300 if smellLevel == 2: allowed = 500 if smellLevel == 3: allowed = 700 x,y,z = es.getplayerlocation(userid) for id in filter(lambda x:not x == userid and not es.getplayerprop(x, 'CBasePlayer.pl.deadflag'), es.getUseridList()): x1, y1, z1 = es.getplayerlocation(id) distance = math.sqrt(math.pow((x-x1), 2) + math.pow((y-y1), 2) + math.pow((z-z1), 2)) if distance <= allowed and distance >= 20: alpha = 255 es.server.queuecmd('est_effect %s %s %s %s %s %s %s %s %s %s'%(11, userid, 0,see_thru_walls_sprite, x1, y1, z1 + 20, .1, 1, int(alpha))) gamethread.delayedname(.1, 'spore_loops', smellLoop) def regenHerbivoreOne(): for userid in es.getUseridList(): if not es.getplayerprop(userid, 'CBasePlayer.pl.deadflag'): if int(players[playerlib.uniqueid(userid)]['Herbivore']): if int(players[playerlib.uniqueid(userid)]['Herbivore']) == 1: if not int(players[playerlib.uniqueid(userid)]['Natural Armor']): maxhealth = 100 else: if int(players[playerlib.uniqueid(userid)]['Natural Armor']) == 1: maxhealth = 105 if int(players[playerlib.uniqueid(userid)]['Natural Armor']) == 2: maxhealth = 110 if int(players[playerlib.uniqueid(userid)]['Natural Armor']) == 3: maxhealth = 120 if int(players[playerlib.uniqueid(userid)]['Natural Armor']) == 4: maxhealth = 140 if int(es.getplayerprop(userid, "CBasePlayer.m_iHealth")) < maxhealth: es.setplayerprop(userid, "CBasePlayer.m_iHealth", int(es.getplayerprop(userid, "CBasePlayer.m_iHealth")) + 1) gamethread.delayedname(4, 'spore_loops', regenHerbivoreOne) def regenHerbivoreTwo(): for userid in es.getUseridList(): if not es.getplayerprop(userid, 'CBasePlayer.pl.deadflag'): if int(players[playerlib.uniqueid(userid)]['Herbivore']): if int(players[playerlib.uniqueid(userid)]['Herbivore']) == 2: if not int(players[playerlib.uniqueid(userid)]['Natural Armor']): maxhealth = 100 else: if int(players[playerlib.uniqueid(userid)]['Natural Armor']) == 1: maxhealth = 105 if int(players[playerlib.uniqueid(userid)]['Natural Armor']) == 2: maxhealth = 110 if int(players[playerlib.uniqueid(userid)]['Natural Armor']) == 3: maxhealth = 120 if int(players[playerlib.uniqueid(userid)]['Natural Armor']) == 4: maxhealth = 140 if int(es.getplayerprop(userid, "CBasePlayer.m_iHealth")) < maxhealth: es.setplayerprop(userid, "CBasePlayer.m_iHealth", int(es.getplayerprop(userid, "CBasePlayer.m_iHealth")) + 2) gamethread.delayedname(4, 'spore_loops', regenHerbivoreTwo) def regenHerbivoreThree(): for userid in es.getUseridList(): if not es.getplayerprop(userid, 'CBasePlayer.pl.deadflag'): if int(players[playerlib.uniqueid(userid)]['Herbivore']): if int(players[playerlib.uniqueid(userid)]['Herbivore']) == 3: if not int(players[playerlib.uniqueid(userid)]['Natural Armor']): maxhealth = 100 else: if int(players[playerlib.uniqueid(userid)]['Natural Armor']) == 1: maxhealth = 105 if int(players[playerlib.uniqueid(userid)]['Natural Armor']) == 2: maxhealth = 110 if int(players[playerlib.uniqueid(userid)]['Natural Armor']) == 3: maxhealth = 120 if int(players[playerlib.uniqueid(userid)]['Natural Armor']) == 4: maxhealth = 140 if int(es.getplayerprop(userid, "CBasePlayer.m_iHealth")) < maxhealth: es.setplayerprop(userid, "CBasePlayer.m_iHealth", int(es.getplayerprop(userid, "CBasePlayer.m_iHealth")) + 3) if int(es.getplayerprop(userid, "CBasePlayer.m_iHealth")) > maxhealth: es.setplayerprop(userid, "CBasePlayer.m_iHealth", maxhealth) gamethread.delayedname(1, 'spore_loops', regenHerbivoreThree) def regenOmnivoreOne(): for userid in es.getUseridList(): if not es.getplayerprop(userid, 'CBasePlayer.pl.deadflag'): if int(players[playerlib.uniqueid(userid)]['Omnivore']): if int(players[playerlib.uniqueid(userid)]['Omnivore']) == 1: if not int(players[playerlib.uniqueid(userid)]['Natural Armor']): maxhealth = 100 else: if int(players[playerlib.uniqueid(userid)]['Natural Armor']) == 1: maxhealth = 105 if int(players[playerlib.uniqueid(userid)]['Natural Armor']) == 2: maxhealth = 110 if int(players[playerlib.uniqueid(userid)]['Natural Armor']) == 3: maxhealth = 120 if int(players[playerlib.uniqueid(userid)]['Natural Armor']) == 4: maxhealth = 140 if int(es.getplayerprop(userid, "CBasePlayer.m_iHealth")) < maxhealth: es.setplayerprop(userid, "CBasePlayer.m_iHealth", int(es.getplayerprop(userid, "CBasePlayer.m_iHealth")) + 1) if int(es.getplayerprop(userid, "CBasePlayer.m_iHealth")) > maxhealth: es.setplayerprop(userid, "CBasePlayer.m_iHealth", maxhealth) gamethread.delayedname(3, 'spore_loops', regenOmnivoreOne) def regenOmnivoreThree(): for userid in es.getUseridList(): if not es.getplayerprop(userid, 'CBasePlayer.pl.deadflag'): if int(players[playerlib.uniqueid(userid)]['Omnivore']): if int(players[playerlib.uniqueid(userid)]['Omnivore']) == 3: if not int(players[playerlib.uniqueid(userid)]['Natural Armor']): maxhealth = 100 else: if int(players[playerlib.uniqueid(userid)]['Natural Armor']) == 1: maxhealth = 105 if int(players[playerlib.uniqueid(userid)]['Natural Armor']) == 2: maxhealth = 110 if int(players[playerlib.uniqueid(userid)]['Natural Armor']) == 3: maxhealth = 120 if int(players[playerlib.uniqueid(userid)]['Natural Armor']) == 4: maxhealth = 140 if int(es.getplayerprop(userid, "CBasePlayer.m_iHealth")) < maxhealth: es.setplayerprop(userid, "CBasePlayer.m_iHealth", int(es.getplayerprop(userid, "CBasePlayer.m_iHealth")) + 3) if int(es.getplayerprop(userid, "CBasePlayer.m_iHealth")) > maxhealth: es.setplayerprop(userid, "CBasePlayer.m_iHealth", maxhealth) gamethread.delayedname(2, 'spore_loops', regenOmnivoreThree) def regenSing(): for userid in es.getUseridList(): if not es.getplayerprop(userid, 'CBasePlayer.pl.deadflag'): if int(players[playerlib.uniqueid(userid)]['Sing']): level = int(players[playerlib.uniqueid(userid)]['Sing']) if level == 1: amount = 50 if level == 2: amount = 60 if level == 3: amount = 75 if level == 4: amount = 100 es.setplayerprop(userid, 'CCSPlayer.m_iAccount', int(es.getplayerprop(userid, "CCSPlayer.m_iAccount")) + amount) if int(es.getplayerprop(userid, "CCSPlayer.m_iAccount")) > 16000: es.setplayerprop(userid, 'CCSPlayer.m_iAccount', 16000) gamethread.delayedname(1, 'spore_loops', regenSing) def resetfood(): global players steam = playerlib.uniqueid(userid) players[steam]['Carnivore'] = 0 players[steam]['Herbivore'] = 0 players[steam]['Omnivore'] = 0 sporeTell(es.getcmduserid(), ['Your feeding type was reset']) def player_jump(ev): userid = ev['userid'] if int(int(players[playerlib.uniqueid(userid)]['Jump'])): level = int(int(players[playerlib.uniqueid(userid)]['Jump'])) deBug(level) myVec = [es.getplayerprop(userid, 'CBasePlayer.localdata.m_vecVelocity[%s]' % x) * 1 for x in range(3)] if level == 1: myVec[0] = 0 myVec[1] = 0 myVec[2] *= .4 if level == 2: myVec[0] = .1 myVec[1] = .1 myVec[2] *= .4 if level == 3: myVec[0] = .2 myVec[1] = .2 myVec[2] *= .6 if level == 4: myVec[0] = .4 myVec[1] = .4 myVec[2] *= .7 if level > 0: deBug('Jump code') es.setplayerprop(userid, 'CBasePlayer.localdata.m_vecBaseVelocity', '%s,%s,%s' % tuple(myVec)) def fly(): if int(round_started): userid = es.getcmduserid() if not es.getplayerprop(userid, 'CBasePlayer.pl.deadflag'): if int(players[playerlib.uniqueid(userid)]['Wings']): level = int(int(players[playerlib.uniqueid(userid)]['Wings'])) viewVec = playerlib.getPlayer(userid).get('viewvector') if level == 1: horiz = 0 vert = 100 if level == 2: horiz = 2 vert = 120 if level == 3: horiz = 3 vert = 130 if level == 4: horiz = 4 vert = 150 if int(level) > 0: horzX = float(horiz) * float(viewVec[0]) horzY = float(horiz) * float(viewVec[1]) vertZ = vert myNewVector = es.createvectorstring(horzX, horzY, vertZ) es.setplayerprop(userid, "CBasePlayer.localdata.m_vecBaseVelocity", myNewVector) effectlib.drawCircle(es.getplayerlocation(userid), 50, steps=12, seconds=.5, width=50, endwidth=50, noise=1) def cheat(): if es.ServerVar('spore_debug') == 1: global players userid = es.getargv(1) if not playerlib.uniqueid(userid): sporeTell(es.getcmduserid(), ['Not a valid player']) return 0 players[playerlib.uniqueid(userid)]['DNA'] += 500 sporeTell(userid, 'You just ran the cheat =p') def set(): if es.ServerVar('spore_debug') == 1: global players userid = es.getargv(1) ability = es.getargv(2) amount = es.getargv(3) if not playerlib.uniqueid(userid): sporeTell(es.getcmduserid(), ['Not a valid player']) return 0 if ability not in skills: sporeTell(userid, ['Not a valid ability']) return 0 if int(amount) not in range(5): sporeTell(userid, ['Not a valid amount']) return 0 players[playerlib.uniqueid(userid)][ability] = int(amount) sporeTell(userid, '%s %s'%(ability, players[playerlib.uniqueid(userid)][ability])) def resetabilities(): global players userid = es.getcmduserid() del players[playerlib.uniqueid(userid)] players[playerlib.uniqueid(userid)] = { 'Sight':0, 'Hearing':0, 'Smell':0, 'Herbivore':0, 'Carnivore':0, 'Omnivore':0, 'Arm':0, 'Leg':0, 'Strike':0, 'Bite':0, 'Poison':0, 'Size':0, 'Natural Armor':0, 'Camouflage':0, 'Intelligent':0, 'Charm': 0, 'Sing': 0, 'Wings': 0, 'Charge': 0, 'Jump': 0 } players[playerlib.uniqueid(userid)]['DNA'] = 100 deBug(players[playerlib.uniqueid(userid)]) sporeTell(userid, ['Your abilities have been reset']) def reset(): global players players = {} sporeMsg('Everyone\'s Abilities have been reset to start a new...') gamethread.delayed(3, es.reload, ('spore')) es.server.queuecmd('mp_restartgame 3') def unload(): gamethread.cancelDelayed('spore_loops') str_path = open(es.getAddonPath('spore') + '/spore_players.db', 'w') cPickle.dump(players, str_path) str_path.close() str_path = open(es.getAddonPath('spore') + '/spore_achievements.db', 'w') cPickle.dump(unlocks, str_path) str_path.close() spe.unregisterPreHook("player_hurt", prepHurt) def round_end(ev): global players gamethread.cancelDelayed('spore_loops') str_path = open(es.getAddonPath('spore') + '/spore_players.db', 'w') cPickle.dump(players, str_path) str_path.close() str_path = open(es.getAddonPath('spore') + '/spore_achievements.db', 'w') cPickle.dump(unlocks, str_path) str_path.close() winner = winner = int(ev['winner']) for userid in es.getUseridList(): sporeTell(userid, ['You gained', '#lightgreen', '%s DNA'%players[playerlib.uniqueid(userid)]['DNA Gained'], '#default', 'for damaging enemies']) if winner > 1: if es.getplayerteam(userid) == winner: players[playerlib.uniqueid(userid)]['DNA'] += es.ServerVar('spore_round_dna') sporeTell(userid, ['You gained', '#lightgreen', '%s DNA'%es.ServerVar('spore_round_dna'), '#default', 'for winning the round']) if not es.getplayerprop(userid, 'CBasePlayer.pl.deadflag'): es.server.queuecmd('est_playplayer %s npc/antlion/idle%s.wav 1'%(userid, random.randint(1,5))) def bomb_planted(ev): global players players[playerlib.uniqueid(ev['userid'])]['DNA'] += es.ServerVar("spore_bomb_planted_dna") sporeTell(ev['userid'], ['You gained', '#lightgreen', '%s DNA'%es.ServerVar("spore_bomb_planted_dna"), '#default', 'for planting the bomb' ]) def bomb_exploded(ev): global players players[playerlib.uniqueid(ev['userid'])]['DNA'] += es.ServerVar("spore_bomb_exploded_dna") sporeTell(ev['userid'], ['You gained', '#lightgreen', '%s DNA'%es.ServerVar("spore_bomb_exploded_dna"), '#default', 'for the bomb exploding' ]) def bomb_defused(ev): global players players[playerlib.uniqueid(ev['userid'])]['DNA'] += es.ServerVar("spore_bomb_defused_dna") sporeTell(ev['userid'], ['You gained', '#lightgreen', '%s DNA'%es.ServerVar("spore_bomb_defused_dna"), '#default', 'for defusing the bomb' ]) def hostage_rescued(ev): global players players[playerlib.uniqueid(ev['userid'])]['DNA'] += es.ServerVar("spore_hostage_rescued_dna") sporeTell(ev['userid'], ['You gained', '#lightgreen', '%s DNA'%es.ServerVar("spore_hostage_rescued_dna"), '#default', 'for rescuing a hostage' ]) def hostage_rescued_all(ev): global players players[playerlib.uniqueid(ev['userid'])]['DNA'] += es.ServerVar("spore_hostage_rescued_all_dna") sporeTell(ev['userid'], ['You gained', '#lightgreen', '%s DNA'%es.ServerVar("spore_hostage_rescued_all_dna"), '#default', 'for rescuing all of the hostages' ]) def player_say(ev): userid = ev['userid'] text = ev['text'] if text.title() in skills: skill = text.title() if str(text.title() + 's') in skills: skill = text.title() + 's' if str(text.title().rstrip('s')) in skills: skill = text.title().rstrip('s') if skill: tempstats = players[playerlib.uniqueid(userid)][skill] tempmenu = popuplib.create('tempmenu') tempmenu.addline(':*SPORE INFO MENU:') tempmenu.addline(':::::::::::::::::::') tempmenu.addline(':%s:'%skill) if skill == 'Sight': if not players[playerlib.uniqueid(userid)]['Sight']: tempmenu.addline('Allows you to see (No Blindness)') tempmenu.addline('0/1 - 40 DNA') tempmenu.addline('-> 1. Buy') tempmenu.menuselect = sightBuy if skill == 'Hearing': if not players[playerlib.uniqueid(userid)]['Hearing']: tempmenu.addline('0/1 - 40 DNA') tempmenu.addline('-> 1. Buy') tempmenu.menuselect = hearingBuy if skill == 'Smell': tempmenu.addline('Allows you to smell enemies (See through walls)') tempmenu.addline('Level 0 - 0m') tempmenu.addline('Level 1 - 10m - 15 DNA') tempmenu.addline('Level 2 - 17m - 30 DNA') tempmenu.addline('Level 3 - 24m - 50 DNA') tempmenu.addline('%s/3'%tempstats) if not tempstats > 2: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = smellBuy if skill == 'Herbivore': tempmenu.addline('Allows you to regenerate') tempmenu.addline('ONLY ONE FEEDING TYPE MAY BE SELECTED') tempmenu.addline('Level 0 - 0hp/s - 10 DNA') tempmenu.addline('Level 1 - 1hp/4s - 25 DNA') tempmenu.addline('Level 2 - 2hp/2s - 40 DNA') tempmenu.addline('Level 3 - 3hp/1s') tempmenu.addline('%s/3'%tempstats) if not tempstats > 2: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = herbivoreBuy if skill == 'Carnivore': tempmenu.addline('Dealing damage heals you') tempmenu.addline('ONLY ONE FEEDING TYPE MAY BE SELECTED') tempmenu.addline('Level 0 - 0%') tempmenu.addline('Level 1 - 10% damage to health - 10 DNA') tempmenu.addline('Level 2 - 25% damage to health - 25 DNA') tempmenu.addline('Level 3 - 50% damage to health - 40 DNA') tempmenu.addline('%s/3'%tempstats) if not tempstats > 2: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = carnivoreBuy if skill == 'Omnivore': tempmenu.addline('Gain traits from both Herbivore and Carnivore') tempmenu.addline('ONLY ONE FEEDING TYPE MAY BE SELECTED') tempmenu.addline('Level 0 - Nothing') tempmenu.addline('Level 1 - 1hp/3s - 15 DNA') tempmenu.addline('Level 2 - 25% damage to health - 30 DNA') tempmenu.addline('Level 3 - 3hp/2s - 40 DNA') tempmenu.addline('%s/3'%tempstats) if not tempstats > 2: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = omnivoreBuy if skill == 'Arm': tempmenu.addline('Allows you to hold more weapons (increases slots)') tempmenu.addline('You may only hold 1 weapon at a time without arms') tempmenu.addline('You can drop the knife and grenade') tempmenu.addline('Smoke Grenades and the Bomb don\'t count') tempmenu.addline('Level 0 - 2 Weapons') tempmenu.addline('Level 1 - 3 Weapons - 5 DNA') tempmenu.addline('Level 2 - 4 Weapons - 10 DNA') tempmenu.addline('Level 3 - 5 Weapons - 15 DNA') tempmenu.addline('Level 4 - 6 Weapons - 20 DNA') tempmenu.addline('%s/4'%tempstats) if not tempstats > 3: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = armBuy if skill == 'Leg': tempmenu.addline('Allows you to move more quickly') tempmenu.addline('Level 0 - 90%') tempmenu.addline('Level 1 - 100% - 5 DNA') tempmenu.addline('Level 2 - 104% - 15 DNA') tempmenu.addline('Level 3 - 108% - 25 DNA') tempmenu.addline('Level 4 - 114% - 40 DNA') tempmenu.addline('%s/4'%tempstats) if not tempstats > 3: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = legBuy if skill == 'Strike': tempmenu.addline('Deals extra damage if you are at least') tempmenu.addline('20m away from your opponent') tempmenu.addline('Level 0 - 0%') tempmenu.addline('Level 1 - 10% - 5 DNA') tempmenu.addline('Level 2 - 15% - 15 DNA') tempmenu.addline('Level 3 - 20% Weapons - 25 DNA') tempmenu.addline('Level 4 - 25% Weapons - 40 DNA') tempmenu.addline('%s/4'%tempstats) if not tempstats > 3: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = strikeBuy if skill == 'Bite': tempmenu.addline('Deals extra damage if you are at least') tempmenu.addline('20m near from your opponent') tempmenu.addline('Level 0 - 0%') tempmenu.addline('Level 1 - 10% - 5 DNA') tempmenu.addline('Level 2 - 15% - 15 DNA') tempmenu.addline('Level 3 - 20% Weapons - 25 DNA') tempmenu.addline('Level 4 - 25% Weapons - 40 DNA') tempmenu.addline('%s/4'%tempstats) if not tempstats > 3: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = BiteBuy if skill == 'Poison': tempmenu.addline('Deals damage after your initial attack') tempmenu.addline('Damage is a percent of damage initially dealt') tempmenu.addline('Poison ticks once every 3 seconds') tempmenu.addline('Level 0 - 0%') tempmenu.addline('Level 1 - 10%, 2 ticks - 5 DNA') tempmenu.addline('Level 2 - 15%, 2 ticks - 15 DNA') tempmenu.addline('Level 3 - 20%, 3 ticks - 25 DNA') tempmenu.addline('Level 4 - 25%, 4 ticks - 40 DNA') tempmenu.addline('%s/4'%tempstats) if not tempstats > 3: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = poisonBuy if skill == 'Charge': tempmenu.addline('Your attacks push your opponents back') tempmenu.addline('Level 0 - None') tempmenu.addline('Level 1 - 2% Chance - 10 DNA') tempmenu.addline('Level 2 - 3% Chance - 25 DNA') tempmenu.addline('Level 3 - 4% Chance - 40 DNA') tempmenu.addline('Level 4 - 6% Chance - 60 DNA') tempmenu.addline('%s/4'%tempstats) if not tempstats > 3: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = chargeBuy if skill == 'Size': tempmenu.addline('Increase in Size increases your health') tempmenu.addline('Does not stack - I.E. level 4 is 140hp') tempmenu.addline('Level 0 - +0hp') tempmenu.addline('Level 1 - +5hp - 5 DNA') tempmenu.addline('Level 2 - +10hp - 15 DNA') tempmenu.addline('Level 3 - +20hp - 25 DNA') tempmenu.addline('Level 4 - +40hp - 40 DNA') tempmenu.addline('%s/4'%tempstats) if not tempstats > 3: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = sizeBuy if skill == 'Natural Armor': tempmenu.addline('Reduces amount of damage taken') tempmenu.addline('Does not stack - I.E. level 4 is 40%') tempmenu.addline('Level 0 - 0%') tempmenu.addline('Level 1 - 10% - 5 DNA') tempmenu.addline('Level 2 - 15% - 10 DNA') tempmenu.addline('Level 3 - 25% - 15 DNA') tempmenu.addline('Level 4 - 40% - 20 DNA') tempmenu.addline('%s/4'%tempstats) if not tempstats > 3: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = armorBuy if skill == 'Camouflage': tempmenu.addline('You appear translucent') tempmenu.addline('Level 0 - 100% Visible') tempmenu.addline('Level 1 - 27% Visible - 10 DNA') tempmenu.addline('Level 2 - 20% Visible - 25 DNA') tempmenu.addline('Level 3 - 14% Visible - 40 DNA') tempmenu.addline('Level 4 - 8% Visible - 60 DNA') tempmenu.addline('%s/4'%tempstats) if not tempstats > 3: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = CamouflageBuy if skill == 'Intelligent': tempmenu.addline('Increases the rate at which you gain DNA') tempmenu.addline('Does not stack - I.E. level 4 is 40%') tempmenu.addline('Level 0 - 0%') tempmenu.addline('Level 1 - 10% - 10 DNA') tempmenu.addline('Level 2 - 25% - 25 DNA') tempmenu.addline('Level 3 - 33% - 40 DNA') tempmenu.addline('Level 4 - 40% - 60 DNA') tempmenu.addline('%s/4'%tempstats) if not tempstats > 3: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = intelligentBuy if skill == 'Sing': tempmenu.addline('You regenerate money every second') tempmenu.addline('Level 0 - $0') tempmenu.addline('Level 1 - $50 - 10 DNA') tempmenu.addline('Level 2 - $60 - 25 DNA') tempmenu.addline('Level 3 - $75 - 40 DNA') tempmenu.addline('Level 4 - $100 - 60 DNA') tempmenu.addline('%s/4'%tempstats) if not tempstats > 3: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = singBuy if skill == 'Charm': tempmenu.addline('When you become attacked, you have') tempmenu.addline('a chance to blind opponents (flashbang') tempmenu.addline('effect) for 1 second') tempmenu.addline('Level 0 - 0% Chance') tempmenu.addline('Level 1 - 1% Chance - 10 DNA') tempmenu.addline('Level 2 - 2% Chance - 25 DNA') tempmenu.addline('Level 3 - 3% Chance - 40 DNA') tempmenu.addline('Level 4 - 5% Chance - 60 DNA') tempmenu.addline('%s/4'%tempstats) if not tempstats > 3: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = charmBuy if skill == 'Jump': tempmenu.addline('You can jump further and higher') tempmenu.addline('The height and distance depend on') tempmenu.addline('your level') tempmenu.addline('Level 0 - Normal Jump') tempmenu.addline('Level 1 - 10 DNA') tempmenu.addline('Level 2 - 25 DNA') tempmenu.addline('Level 3 - 40 DNA') tempmenu.addline('Level 4 - 60 DNA') tempmenu.addline('%s/4'%tempstats) if not tempstats > 3: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = jumpBuy if skill == 'Wings': tempmenu.addline('You can fly with the press of a button!') tempmenu.addline('"fly" (this is a console command you bind)') tempmenu.addline('You need to jump before you use fly') tempmenu.addline('Level 0 - No Flight') tempmenu.addline('Level 1 - 12 DNA') tempmenu.addline('Level 2 - 25 DNA') tempmenu.addline('Level 3 - 40 DNA') tempmenu.addline('Level 4 - No jump required - 60 DNA') tempmenu.addline('%s/4'%tempstats) if not tempstats > 3: tempmenu.addline('-> 1. Buy') tempmenu.menuselect = wingsBuy tempmenu.addline(':::::::::::::::::::') tempmenu.addline('-> 0. Exit') tempmenu.send(userid)