''' 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 es.ServerVar('spore_debug', 0) sporeinfo = es.AddonInfo() sporeinfo.name = 'Spore' sporeinfo.version = 'Beta 1.4' 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 = {} 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 } 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 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('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('-> 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. Charge') skillmenu3.addline('-> 7. 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('lev1') es.regclientcmd('lev1', 'spore/lev1') es.unregclientcmd('lev0') es.regclientcmd('lev0', 'spore/lev0') es.unregclientcmd('lev2') es.regclientcmd('lev2', 'spore/lev2') es.unregclientcmd('lev3') es.regclientcmd('lev3', 'spore/lev3') es.unregclientcmd('lev4') es.regclientcmd('lev4', 'spore/lev4') es.regcmd('cheat', 'spore/cheat') es.regcmd('reset', 'spore/reset') def sendMain(): global main main.send(es.getcmduserid()) def mainSelection(userid, choice, popupid): if choice == 2: tempstats = players[str(es.getplayersteamid(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 == 7: tempstats = players[str(es.getplayersteamid(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[str(es.getplayersteamid(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[str(es.getplayersteamid(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 == 6: 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 == 7: 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[str(es.getplayersteamid(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 change your gravity') tempmenu.addline('(these are console commands you bind)') tempmenu.addline('lev0 sets gravity to normal') tempmenu.addline('Level 0 - No Changing') tempmenu.addline('Level 1 - lev1 (50%) - 10 DNA') tempmenu.addline('Level 2 - lev2 (40%) - 25 DNA') tempmenu.addline('Level 3 - lev3 (30%) - 40 DNA') tempmenu.addline('Level 4 - lev4 (10%$) - 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('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): if choice == 1: if not players[str(es.getplayersteamid(userid))]['Sight']: if players[str(es.getplayersteamid(userid))]['DNA'] >= 40: players[str(es.getplayersteamid(userid))]['Sight'] = 1 players[str(es.getplayersteamid(userid))]['DNA'] -= 40 sporeTell(userid, 'You just upgraded your sight for 40 DNA') else: sporeTell(userid, 'You don\'t have enough DNA') else: sporeTell(userid, 'You have already maxed this ability') def hearingBuy(userid, choice, popupid): if choice == 1: if not players[str(es.getplayersteamid(userid))]['Hearing']: if players[str(es.getplayersteamid(userid))]['DNA'] >= 40: players[str(es.getplayersteamid(userid))]['Hearing'] = 1 players[str(es.getplayersteamid(userid))]['DNA'] -= 40 sporeTell(userid, 'You just upgraded your Hearing for 40 DNA') else: sporeTell(userid, 'You don\'t have enough DNA') else: sporeTell(userid, 'You have already maxed this ability') def smellBuy(userid, choice, popupid): if choice == 1: if not players[str(es.getplayersteamid(userid))]['Smell']: cost = 15 if players[str(es.getplayersteamid(userid))]['Smell'] == 1: cost = 30 if players[str(es.getplayersteamid(userid))]['Smell'] == 2: cost = 50 if players[str(es.getplayersteamid(userid))]['Smell'] == 3: sporeTell(userid, 'You have already maxed this ability') return 0 if players[str(es.getplayersteamid(userid))]['DNA'] >= cost: players[str(es.getplayersteamid(userid))]['Smell'] += 1 players[str(es.getplayersteamid(userid))]['DNA'] -= cost sporeTell(userid, 'You have upgraded your Smell') else: sporeTell(userid, 'You don\'t have enough DNA for this ability') def herbivoreBuy(userid, choice, popupid): if choice == 1: if not players[str(es.getplayersteamid(userid))]['Carnivore'] and not players[str(es.getplayersteamid(userid))]['Omnivore']: if not players[str(es.getplayersteamid(userid))]['Herbivore']: cost = 10 if players[str(es.getplayersteamid(userid))]['Herbivore'] == 1: cost = 25 if players[str(es.getplayersteamid(userid))]['Herbivore'] == 2: cost = 40 if players[str(es.getplayersteamid(userid))]['Herbivore'] == 3: sporeTell(userid, 'You have already maxed this ability') return 0 if players[str(es.getplayersteamid(userid))]['DNA'] >= cost: players[str(es.getplayersteamid(userid))]['Herbivore'] += 1 players[str(es.getplayersteamid(userid))]['DNA'] -= cost sporeTell(userid, 'You have upgraded your Herbivore') 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): if choice == 1: if not players[str(es.getplayersteamid(userid))]['Herbivore'] and not players[str(es.getplayersteamid(userid))]['Omnivore']: if not players[str(es.getplayersteamid(userid))]['Carnivore']: cost = 10 if players[str(es.getplayersteamid(userid))]['Carnivore'] == 1: cost = 25 if players[str(es.getplayersteamid(userid))]['Carnivore'] == 2: cost = 40 if players[str(es.getplayersteamid(userid))]['Carnivore'] == 3: sporeTell(userid, 'You have already maxed this ability') return 0 if players[str(es.getplayersteamid(userid))]['DNA'] >= cost: players[str(es.getplayersteamid(userid))]['Carnivore'] += 1 players[str(es.getplayersteamid(userid))]['DNA'] -= cost sporeTell(userid, 'You have upgraded your Carnivore') 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): if choice == 1: if not players[str(es.getplayersteamid(userid))]['Carnivore'] and not players[str(es.getplayersteamid(userid))]['Herbivore']: if not players[str(es.getplayersteamid(userid))]['Omnivore']: cost = 15 if players[str(es.getplayersteamid(userid))]['Omnivore'] == 1: cost = 30 if players[str(es.getplayersteamid(userid))]['Omnivore'] == 2: cost = 50 if players[str(es.getplayersteamid(userid))]['Omnivore'] == 3: sporeTell(userid, 'You have already maxed this ability') return 0 if players[str(es.getplayersteamid(userid))]['DNA'] >= cost: players[str(es.getplayersteamid(userid))]['Omnivore'] += 1 players[str(es.getplayersteamid(userid))]['DNA'] -= cost sporeTell(userid, 'You have upgraded your Omnivore') 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): if choice == 1: if not players[str(es.getplayersteamid(userid))]['Arm']: cost = 5 if players[str(es.getplayersteamid(userid))]['Arm'] == 1: cost = 10 if players[str(es.getplayersteamid(userid))]['Arm'] == 2: cost = 15 if players[str(es.getplayersteamid(userid))]['Arm'] == 3: cost = 20 if players[str(es.getplayersteamid(userid))]['Arm'] == 4: sporeTell(userid, 'You have already maxed this ability') return 0 if players[str(es.getplayersteamid(userid))]['DNA'] >= cost: players[str(es.getplayersteamid(userid))]['Arm'] += 1 players[str(es.getplayersteamid(userid))]['DNA'] -= cost sporeTell(userid, 'You have upgraded your Arms') else: sporeTell(userid, 'You don\'t have enough DNA for this ability') def legBuy(userid, choice, popupid): if choice == 1: if not players[str(es.getplayersteamid(userid))]['Leg']: cost = 5 if players[str(es.getplayersteamid(userid))]['Leg'] == 1: cost = 15 if players[str(es.getplayersteamid(userid))]['Leg'] == 2: cost = 25 if players[str(es.getplayersteamid(userid))]['Leg'] == 3: cost = 40 if players[str(es.getplayersteamid(userid))]['Leg'] == 4: sporeTell(userid, 'You have already maxed this ability') return 0 if players[str(es.getplayersteamid(userid))]['DNA'] >= cost: players[str(es.getplayersteamid(userid))]['Leg'] += 1 players[str(es.getplayersteamid(userid))]['DNA'] -= cost sporeTell(userid, 'You have upgraded your Legs') else: sporeTell(userid, 'You don\'t have enough DNA for this ability') def strikeBuy(userid, choice, popupid): if choice == 1: if not players[str(es.getplayersteamid(userid))]['Strike']: cost = 5 if players[str(es.getplayersteamid(userid))]['Strike'] == 1: cost = 15 if players[str(es.getplayersteamid(userid))]['Strike'] == 2: cost = 25 if players[str(es.getplayersteamid(userid))]['Strike'] == 3: cost = 40 if players[str(es.getplayersteamid(userid))]['Strike'] == 4: sporeTell(userid, 'You have already maxed this ability') return 0 if players[str(es.getplayersteamid(userid))]['DNA'] >= cost: players[str(es.getplayersteamid(userid))]['Strike'] += 1 players[str(es.getplayersteamid(userid))]['DNA'] -= cost sporeTell(userid, 'You have upgraded your Strike') else: sporeTell(userid, 'You don\'t have enough DNA for this ability') def biteBuy(userid, choice, popupid): if choice == 1: if not players[str(es.getplayersteamid(userid))]['Bite']: cost = 5 if players[str(es.getplayersteamid(userid))]['Bite'] == 1: cost = 15 if players[str(es.getplayersteamid(userid))]['Bite'] == 2: cost = 25 if players[str(es.getplayersteamid(userid))]['Bite'] == 3: cost = 40 if players[str(es.getplayersteamid(userid))]['Bite'] == 4: sporeTell(userid, 'You have already maxed this ability') return 0 if players[str(es.getplayersteamid(userid))]['DNA'] >= cost: players[str(es.getplayersteamid(userid))]['Bite'] += 1 players[str(es.getplayersteamid(userid))]['DNA'] -= cost sporeTell(userid, 'You have upgraded your Bite') else: sporeTell(userid, 'You don\'t have enough DNA for this ability') def poisonBuy(userid, choice, popupid): if choice == 1: if not players[str(es.getplayersteamid(userid))]['Poison']: cost = 5 if players[str(es.getplayersteamid(userid))]['Poison'] == 1: cost = 15 if players[str(es.getplayersteamid(userid))]['Poison'] == 2: cost = 25 if players[str(es.getplayersteamid(userid))]['Poison'] == 3: cost = 40 if players[str(es.getplayersteamid(userid))]['Poison'] == 4: sporeTell(userid, 'You have already maxed this ability') return 0 if players[str(es.getplayersteamid(userid))]['DNA'] >= cost: players[str(es.getplayersteamid(userid))]['Poison'] += 1 players[str(es.getplayersteamid(userid))]['DNA'] -= cost sporeTell(userid, 'You have upgraded your Poison') else: sporeTell(userid, 'You don\'t have enough DNA for this ability') def armorBuy(userid, choice, popupid): if choice == 1: if not players[str(es.getplayersteamid(userid))]['Natural Armor']: cost = 5 if players[str(es.getplayersteamid(userid))]['Natural Armor'] == 1: cost = 10 if players[str(es.getplayersteamid(userid))]['Natural Armor'] == 2: cost = 15 if players[str(es.getplayersteamid(userid))]['Natural Armor'] == 3: cost = 20 if players[str(es.getplayersteamid(userid))]['Natural Armor'] == 4: sporeTell(userid, 'You have already maxed this ability') return 0 if players[str(es.getplayersteamid(userid))]['DNA'] >= cost: players[str(es.getplayersteamid(userid))]['Natural Armor'] += 1 players[str(es.getplayersteamid(userid))]['DNA'] -= cost sporeTell(userid, 'You have upgraded your Natural Armor') else: sporeTell(userid, 'You don\'t have enough DNA for this ability') def sizeBuy(userid, choice, popupid): if choice == 1: if not players[str(es.getplayersteamid(userid))]['Size']: cost = 5 if players[str(es.getplayersteamid(userid))]['Size'] == 1: cost = 15 if players[str(es.getplayersteamid(userid))]['Size'] == 2: cost = 25 if players[str(es.getplayersteamid(userid))]['Size'] == 3: cost = 40 if players[str(es.getplayersteamid(userid))]['Size'] == 4: sporeTell(userid, 'You have already maxed this ability') return 0 if players[str(es.getplayersteamid(userid))]['DNA'] >= cost: players[str(es.getplayersteamid(userid))]['Size'] += 1 players[str(es.getplayersteamid(userid))]['DNA'] -= cost sporeTell(userid, 'You have upgraded your Size') else: sporeTell(userid, 'You don\'t have enough DNA for this ability') def intelligentBuy(userid, choice, popupid): if choice == 1: if not players[str(es.getplayersteamid(userid))]['Intelligent']: cost = 10 if players[str(es.getplayersteamid(userid))]['Intelligent'] == 1: cost = 25 if players[str(es.getplayersteamid(userid))]['Intelligent'] == 2: cost = 40 if players[str(es.getplayersteamid(userid))]['Intelligent'] == 3: cost = 60 if players[str(es.getplayersteamid(userid))]['Intelligent'] == 4: sporeTell(userid, 'You have already maxed this ability') return 0 if players[str(es.getplayersteamid(userid))]['DNA'] >= cost: players[str(es.getplayersteamid(userid))]['Intelligent'] += 1 players[str(es.getplayersteamid(userid))]['DNA'] -= cost sporeTell(userid, 'You have upgraded your Intelligence') else: sporeTell(userid, 'You don\'t have enough DNA for this ability') def CamouflageBuy(userid, choice, popupid): if choice == 1: if not players[str(es.getplayersteamid(userid))]['Camouflage']: cost = 10 if players[str(es.getplayersteamid(userid))]['Camouflage'] == 1: cost = 25 if players[str(es.getplayersteamid(userid))]['Camouflage'] == 2: cost = 40 if players[str(es.getplayersteamid(userid))]['Camouflage'] == 3: cost = 60 if players[str(es.getplayersteamid(userid))]['Camouflage'] == 4: sporeTell(userid, 'You have already maxed this ability') return 0 if players[str(es.getplayersteamid(userid))]['DNA'] >= cost: players[str(es.getplayersteamid(userid))]['Camouflage'] += 1 players[str(es.getplayersteamid(userid))]['DNA'] -= cost sporeTell(userid, 'You have upgraded your Camouflage') else: sporeTell(userid, 'You don\'t have enough DNA for this ability') def charmBuy(userid, choice, popupid): if choice == 1: if not players[str(es.getplayersteamid(userid))]['Charm']: cost = 10 if players[str(es.getplayersteamid(userid))]['Charm'] == 1: cost = 25 if players[str(es.getplayersteamid(userid))]['Charm'] == 2: cost = 40 if players[str(es.getplayersteamid(userid))]['Charm'] == 3: cost = 60 if players[str(es.getplayersteamid(userid))]['Charm'] == 4: sporeTell(userid, 'You have already maxed this ability') return 0 if players[str(es.getplayersteamid(userid))]['DNA'] >= cost: players[str(es.getplayersteamid(userid))]['Charm'] += 1 players[str(es.getplayersteamid(userid))]['DNA'] -= cost sporeTell(userid, 'You have upgraded your Charm') else: sporeTell(userid, 'You don\'t have enough DNA for this ability') def singBuy(userid, choice, popupid): if choice == 1: if not players[str(es.getplayersteamid(userid))]['Sing']: cost = 10 if players[str(es.getplayersteamid(userid))]['Sing'] == 1: cost = 25 if players[str(es.getplayersteamid(userid))]['Sing'] == 2: cost = 40 if players[str(es.getplayersteamid(userid))]['Sing'] == 3: cost = 60 if players[str(es.getplayersteamid(userid))]['Sing'] == 4: sporeTell(userid, 'You have already maxed this ability') return 0 if players[str(es.getplayersteamid(userid))]['DNA'] >= cost: players[str(es.getplayersteamid(userid))]['Sing'] += 1 players[str(es.getplayersteamid(userid))]['DNA'] -= cost sporeTell(userid, 'You have upgraded your Sing') else: sporeTell(userid, 'You don\'t have enough DNA for this ability') def wingsBuy(userid, choice, popupid): if choice == 1: if not players[str(es.getplayersteamid(userid))]['Wings']: cost = 10 if players[str(es.getplayersteamid(userid))]['Wings'] == 1: cost = 25 if players[str(es.getplayersteamid(userid))]['Wings'] == 2: cost = 40 if players[str(es.getplayersteamid(userid))]['Wings'] == 3: cost = 60 if players[str(es.getplayersteamid(userid))]['Wings'] == 4: sporeTell(userid, 'You have already maxed this ability') return 0 if players[str(es.getplayersteamid(userid))]['DNA'] >= cost: players[str(es.getplayersteamid(userid))]['Wings'] += 1 players[str(es.getplayersteamid(userid))]['DNA'] -= cost sporeTell(userid, 'You have upgraded your Wings') else: sporeTell(userid, 'You don\'t have enough DNA for this ability') def jumpBuy(userid, choice, popupid): if choice == 1: if not players[str(es.getplayersteamid(userid))]['Jump']: cost = 10 if players[str(es.getplayersteamid(userid))]['Jump'] == 1: cost = 25 if players[str(es.getplayersteamid(userid))]['Jump'] == 2: cost = 40 if players[str(es.getplayersteamid(userid))]['Jump'] == 3: cost = 60 if players[str(es.getplayersteamid(userid))]['Jump'] == 4: sporeTell(userid, 'You have already maxed this ability') return 0 if players[str(es.getplayersteamid(userid))]['DNA'] >= cost: players[str(es.getplayersteamid(userid))]['Jump'] += 1 players[str(es.getplayersteamid(userid))]['DNA'] -= cost sporeTell(userid, 'You have upgraded your Jump') else: sporeTell(userid, 'You don\'t have enough DNA for this ability') def chargeBuy(userid, choice, popupid): if choice == 1: if not players[str(es.getplayersteamid(userid))]['Charge']: cost = 10 if players[str(es.getplayersteamid(userid))]['Charge'] == 1: cost = 25 if players[str(es.getplayersteamid(userid))]['Charge'] == 2: cost = 40 if players[str(es.getplayersteamid(userid))]['Charge'] == 3: cost = 60 if players[str(es.getplayersteamid(userid))]['Charge'] == 4: sporeTell(userid, 'You have already maxed this ability') return 0 if players[str(es.getplayersteamid(userid))]['DNA'] >= cost: players[str(es.getplayersteamid(userid))]['Charge'] += 1 players[str(es.getplayersteamid(userid))]['DNA'] -= cost sporeTell(userid, 'You have upgraded your Charge') else: sporeTell(userid, 'You don\'t have enough DNA for this ability') def round_start(ev): 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 > 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 userid = int(ev['userid']) try: blank = players[str(es.getplayersteamid(userid))] deBug('Players stats') except KeyError: deBug('Player Not Found: %s (Userid %s)'%(es.getplayername(userid), userid)) deBug('Adding Player') players[str(es.getplayersteamid(userid))] = skills players[str(es.getplayersteamid(userid))]['DNA'] = 100 sporeTell(userid, 'Welcome to Spore! I suggest you take the Sight and Hearing abilities. Open the menu by typing "menu"') if not players[str(es.getplayersteamid(userid))]['Sight']: sporeTell(userid, 'You are partially blind because you did not evolve sight') if not players[str(es.getplayersteamid(userid))]['Hearing']: sporeTell(userid, 'You are partially deaf because you did not evolve hearing') if not players[str(es.getplayersteamid(userid))]['Leg']: sporeTell(userid, 'You are partially slow because you did not evolve legs') if not players[str(es.getplayersteamid(userid))]['Arm']: sporeTell(userid, 'You can\'t hold alot of weapons because you did not evolve arms') sporeTell(userid, 'You have %s DNA to evolve with'%str(players[str(es.getplayersteamid(userid))]['DNA']).partition('.')[0]) if not players[str(es.getplayersteamid(userid))]['Hearing']: es.server.queuecmd('est_deafen %s %s 85 0 0'%(userid, int(es.ServerVar('mp_roundtime')) * 120)) if not players[str(es.getplayersteamid(userid))]['Leg']: speed = .9 else: if players[str(es.getplayersteamid(userid))]['Leg'] == 1: speed = 1 if players[str(es.getplayersteamid(userid))]['Leg'] == 2: speed = 1.04 if players[str(es.getplayersteamid(userid))]['Leg'] == 3: speed = 1.08 if players[str(es.getplayersteamid(userid))]['Leg'] == 4: speed = 1.14 es.server.queuecmd('est_speed %s %s'%(userid, speed)) if players[str(es.getplayersteamid(userid))]['Camouflage']: level = players[str(es.getplayersteamid(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'%(userid, color)) if players[str(es.getplayersteamid(userid))]['Size'] == 1: es.setplayerprop(userid, "CBasePlayer.m_iHealth", 105) if players[str(es.getplayersteamid(userid))]['Size'] == 2: es.setplayerprop(userid, "CBasePlayer.m_iHealth", 110) if players[str(es.getplayersteamid(userid))]['Size'] == 3: es.setplayerprop(userid, "CBasePlayer.m_iHealth", 120) if players[str(es.getplayersteamid(userid))]['Size'] == 4: es.setplayerprop(userid, "CBasePlayer.m_iHealth", 140) deBug('Test') players[str(es.getplayersteamid(userid))]['DNA Gained'] = 0 es.server.queuecmd('est_hsay %s Open the *SPORE menu by typing "menu"'%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(): userid = ReturnEV('userid') attacker = ReturnEV('attacker') if attacker and attacker != '0': damage = ReturnEV('dmg_health') health = es.getplayerprop(userid, 'CBasePlayer.m_iHealth') if players[str(es.getplayersteamid(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 str(es.getplayersteamid(attacker)) not in players: return 0 if es.getplayerteam(attacker) != es.getplayerteam(userid): dnaGained = dmg * .005 if players[str(es.getplayersteamid(attacker))]['Intelligent']: level = players[str(es.getplayersteamid(attacker))]['Intelligent'] if level == 1: dnaGained *= .1 if level == 2: dnaGained *= .25 if level == 3: dnaGained *= .33 if level == 4: dnaGained *= .4 players[str(es.getplayersteamid(attacker))]['DNA'] += dnaGained players[str(es.getplayersteamid(attacker))]['DNA Gained'] += dnaGained if players[str(es.getplayersteamid(attacker))]['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 = players[str(es.getplayersteamid(attacker))]['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 players[str(es.getplayersteamid(attacker))]['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 = players[str(es.getplayersteamid(attacker))]['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 players[str(es.getplayersteamid(attacker))]['Poison']: if players[str(es.getplayersteamid(attacker))]['Poison'] == 1: gamethread.delayedname(3, 'spore_loops', Damage, (userid, attacker, dmg * .1)) gamethread.delayedname(6, 'spore_loops', Damage, (userid, attacker, dmg * .1)) if players[str(es.getplayersteamid(attacker))]['Poison'] == 2: gamethread.delayedname(3, 'spore_loops', Damage, (userid, attacker, dmg * .15)) gamethread.delayedname(6, 'spore_loops', Damage, (userid, attacker, dmg * .15)) if players[str(es.getplayersteamid(attacker))]['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 players[str(es.getplayersteamid(attacker))]['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 players[str(es.getplayersteamid(attacker))]['Charge']: level = players[str(es.getplayersteamid(attacker))]['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 players[str(es.getplayersteamid(attacker))]['Carnivore']: if not players[str(es.getplayersteamid(attacker))]['Size']: maxhealth = 100 else: level = players[str(es.getplayersteamid(attacker))]['Size'] if level == 1: maxhealth = 105 if level == 2: maxhealth = 110 if level == 3: maxhealth = 120 if level == 4: maxhealth = 140 level = players[str(es.getplayersteamid(attacker))]['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 players[str(es.getplayersteamid(attacker))]['Omnivore'] >= 2: if not players[str(es.getplayersteamid(attacker))]['Size']: maxhealth = 100 else: level = players[str(es.getplayersteamid(attacker))]['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 players[str(es.getplayersteamid(userid))]['Charm'] > 0: level = players[str(es.getplayersteamid(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 round_end(ev): gamethread.cancelDelayed('spore_loops') str_path = open(es.getAddonPath('spore') + '/spore_players.db', 'w') cPickle.dump(players, str_path) str_path.close() for userid in es.getUseridList(): sporeTell(userid, 'You gained %s DNA this round'%players[str(es.getplayersteamid(userid))]['DNA Gained']) def blindLoop(): for userid in es.getUseridList(): if not players[str(es.getplayersteamid(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 players[str(es.getplayersteamid(userid))]['Smell']: smellLevel = players[str(es.getplayersteamid(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 players[str(es.getplayersteamid(userid))]['Herbivore']: if players[str(es.getplayersteamid(userid))]['Herbivore'] == 1: if not players[str(es.getplayersteamid(userid))]['Size']: maxhealth = 100 else: if players[str(es.getplayersteamid(userid))]['Size'] == 1: maxhealth = 105 if players[str(es.getplayersteamid(userid))]['Size'] == 2: maxhealth = 110 if players[str(es.getplayersteamid(userid))]['Size'] == 3: maxhealth = 120 if players[str(es.getplayersteamid(userid))]['Size'] == 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 players[str(es.getplayersteamid(userid))]['Herbivore']: if players[str(es.getplayersteamid(userid))]['Herbivore'] == 2: if not players[str(es.getplayersteamid(userid))]['Size']: maxhealth = 100 else: if players[str(es.getplayersteamid(userid))]['Size'] == 1: maxhealth = 105 if players[str(es.getplayersteamid(userid))]['Size'] == 2: maxhealth = 110 if players[str(es.getplayersteamid(userid))]['Size'] == 3: maxhealth = 120 if players[str(es.getplayersteamid(userid))]['Size'] == 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 players[str(es.getplayersteamid(userid))]['Herbivore']: if players[str(es.getplayersteamid(userid))]['Herbivore'] == 3: if not players[str(es.getplayersteamid(userid))]['Size']: maxhealth = 100 else: if players[str(es.getplayersteamid(userid))]['Size'] == 1: maxhealth = 105 if players[str(es.getplayersteamid(userid))]['Size'] == 2: maxhealth = 110 if players[str(es.getplayersteamid(userid))]['Size'] == 3: maxhealth = 120 if players[str(es.getplayersteamid(userid))]['Size'] == 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 players[str(es.getplayersteamid(userid))]['Omnivore']: if players[str(es.getplayersteamid(userid))]['Omnivore'] == 1: if not players[str(es.getplayersteamid(userid))]['Size']: maxhealth = 100 else: if players[str(es.getplayersteamid(userid))]['Size'] == 1: maxhealth = 105 if players[str(es.getplayersteamid(userid))]['Size'] == 2: maxhealth = 110 if players[str(es.getplayersteamid(userid))]['Size'] == 3: maxhealth = 120 if players[str(es.getplayersteamid(userid))]['Size'] == 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 players[str(es.getplayersteamid(userid))]['Omnivore']: if players[str(es.getplayersteamid(userid))]['Omnivore'] == 3: if not players[str(es.getplayersteamid(userid))]['Size']: maxhealth = 100 else: if players[str(es.getplayersteamid(userid))]['Size'] == 1: maxhealth = 105 if players[str(es.getplayersteamid(userid))]['Size'] == 2: maxhealth = 110 if players[str(es.getplayersteamid(userid))]['Size'] == 3: maxhealth = 120 if players[str(es.getplayersteamid(userid))]['Size'] == 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 players[str(es.getplayersteamid(userid))]['Sing']: level = players[str(es.getplayersteamid(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 = es.getplayersteamid(es.getcmduserid()) 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 players[str(es.getplayersteamid(userid))]['Jump']: level = players[str(es.getplayersteamid(userid))]['Jump'] if level == 1: amount = .5 if level == 2: amount = .6 if level == 3: amount = .7 if level == 4: amount = 1 es.setplayerprop(userid, 'CBasePlayer.localdata.m_vecBaseVelocity', '%s,%s,%s' % tuple([es.getplayerprop(userid, 'CBasePlayer.localdata.m_vecVelocity[%s]' % x) * amount for x in range(3)])) def lev0(): userid = es.getcmduserid() if players[str(es.getplayersteamid(userid))]['Wings']: es.server.queuecmd('est_gravity %s 1'%userid) def lev1(): userid = es.getcmduserid() if players[str(es.getplayersteamid(userid))]['Wings']: es.server.queuecmd('est_gravity %s .5'%userid) def lev2(): userid = es.getcmduserid() if players[str(es.getplayersteamid(userid))]['Wings'] >= 2: es.server.queuecmd('est_gravity %s .4'%userid) def lev3(): userid = es.getcmduserid() if players[str(es.getplayersteamid(userid))]['Wings'] >= 3: es.server.queuecmd('est_gravity %s .3'%userid) def lev4(): userid = es.getcmduserid() if players[str(es.getplayersteamid(userid))]['Wings'] >= 4: es.server.queuecmd('est_gravity %s .1'%userid) def cheat(): if es.ServerVar('spore_debug') == 1: global players userid = es.getargv(1) players[str(es.getplayersteamid(userid))]['DNA'] += 500 sporeTell(userid, 'You just ran the cheat =p') def resetabilities(): global players userid = es.getcmduserid() del players[str(es.getplayersteamid(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.load, ('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()