''' Charm - % Chance Blind attacker Sing - Money Regeneration Wings - Lev Commands Charge - % Chance Push Opponent Back Jump - High Jump ''' import es, gamethread, os.path, cPickle, math, popuplib, weaponlib, random, playerlib, effectlib es.ServerVar('spore_debug', 0) sporeinfo = es.AddonInfo() sporeinfo.name = 'Spore' sporeinfo.version = 'Beta 1.6' sporeinfo.url = 'http://addons.eventscripts.com/addons/view/spore' sporeinfo.basename = 'Spore' sporeinfo.author = 'Devin Pariseau' es.ServerVar('spore_version',sporeinfo.version,'Spore By: Devin Pariseau').makepublic() 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, message): es.tell(userid, '#multi', '#green', ':SPORE:', '#default', message) def load(): 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') es.server.queuecmd('est_RegEventBlock player_hurt "es_xdoblock spore/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, 'info') main.menuselect = mainSelection info = popuplib.create('info') info.addline(':*SPORE* Help Menu:') info.addline(':::::::::::::::::::') info.addline('This mod allows you to gain skills') info.addline('and abilities to enhance the game') info.addline('of CS:S. As you deal damage, you') info.addline('will gain "DNA". You use DNA to') info.addline('purchase new abilities. It is ') info.addline('recommended to take "Sight" as your') info.addline('first ability. Type "menu" to reopen') info.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('menu') es.regsaycmd('menu', 'spore/sendMain') es.unregclientcmd('resetfood') es.regclientcmd('resetfood', '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('reset', '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 "resetfood" in console') 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 "resetabilities" in console') tempmenu.send(userid) def playerDisplay(userid, choice, popupname): tempstats = players[str(es.getplayersteamid(choice))] 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['Carnivore']) if not tempstats['Carnivore'] > 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('-> 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('-> 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('-> 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 sight for 40 DNA') 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 Hearing for 40 DNA') 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 have upgraded your 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 have upgraded your 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 have upgraded your 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 have upgraded your 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 have upgraded your 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 have upgraded your 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 have upgraded your 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 have upgraded your 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 have upgraded your 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 have upgraded your 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 have upgraded your 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 have upgraded your Intelligence') 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 have upgraded your 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 have upgraded your 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 have upgraded your 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 have upgraded your 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 have upgraded your 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 have upgraded your 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 x > int(players[str(es.getplayersteamid(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 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 sporeTell(ev['userid'], 'Welcome to Spore! I suggest you take the Sight and Hearing abilities. Open the menu by typing "menu"') if not int(players[playerlib.uniqueid(ev['userid'])]['Sight']): sporeTell(ev['userid'], 'You are partially blind because you did not evolve sight') if not int(players[playerlib.uniqueid(ev['userid'])]['Hearing']): sporeTell(ev['userid'], 'You are partially deaf because you did not evolve hearing') if not int(players[playerlib.uniqueid(ev['userid'])]['Leg']): sporeTell(ev['userid'], 'You are partially slow because you did not evolve legs') if not int(players[playerlib.uniqueid(ev['userid'])]['Arm']): sporeTell(ev['userid'], 'You can\'t hold alot of weapons because you did not evolve arms') sporeTell(ev['userid'], 'You have %s DNA to evolve with'%str(players[playerlib.uniqueid(ev['userid'])]['DNA']).partition('.')[0]) 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']) 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(): userid = ReturnEV('userid') attacker = ReturnEV('attacker') if attacker != 0 and attacker != '0': damage = ReturnEV('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 * .005 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 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('Messing with health with Bite') 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('Messing with health in Strike') 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)) if int(players[playerlib.uniqueid(userid)]['Carnivore']): 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 level = int(players[playerlib.uniqueid(userid)]['Carnivore']) if level == 1: heal = dmg * .1 if level == 2: heal = dmg * .25 if level == 3: heal = dmg * .5 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)]['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() 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 %s DNA for damaging enemies'%players[playerlib.uniqueid(userid)]['DNA Gained']) if winner > 1: if es.getplayerteam(userid) == winner: players[playerlib.uniqueid(userid)]['DNA'] += .4 sporeTell(userid, 'You gained .4 DNA for winning the round') def bomb_planted(ev): global players players[ev['es_steamid']]['DNA'] += .9 sporeTell(ev['userid'], 'You gained .9 DNA for planting the bomb') def bomb_exploded(ev): global players players[ev['es_steamid']]['DNA'] += 1.1 sporeTell(ev['userid'], 'You gained 1.1 DNA for the bomb exploding') def bomb_defused(ev): global players players[ev['es_steamid']]['DNA'] += 1.4 sporeTell(ev['userid'], 'You gained 1.4 DNA for defusing the bomb') def hostage_rescued(ev): global players players[ev['es_steamid']]['DNA'] += .2 sporeTell(ev['userid'], 'You gained .2 DNA for rescuing a hostage') def hostage_rescued_all(ev): global players players[ev['es_steamid']]['DNA'] += .5 sporeTell(ev['userid'], 'You gained .5 DNA for rescuing all of the hostages')