SHOW:
|
|
- or go back to the newest paste.
| 1 | - | #TODO: ontake/drops |
| 1 | + | #Items: |
| 2 | #Silencer: "X just took DAMAGE from a WEAPON!" | |
| 3 | - | def HANDLE_Dummy(self,target): |
| 3 | + | #Cloak: "NOTICE: You just took DAMAGE from a WEAPON!" |
| 4 | #Bottle: [Fairy,Health,MP,Empty] | |
| 5 | #Raindance Stick: Make items fall from the sky, sometimes hit people | |
| 6 | - | def HANDLE_Weapon(self,target): |
| 6 | + | #Swap Card: Swap all stats and items |
| 7 | - | attacktype='normal' |
| 7 | + | #Mirror: Reflects attack after use |
| 8 | - | if 'ninja' in self.Status: |
| 8 | + | #Magic Wand: Random shit |
| 9 | - | attacktype='ninja' |
| 9 | + | #Saint's Medal: Harm killer and revive |
| 10 | ||
| 11 | - | attacktype='cloaked' |
| 11 | + | #Game: |
| 12 | #.attack/weapon <target> uses the current weapon | |
| 13 | #.item <target> uses the current item | |
| 14 | - | def __init__(self,type='weapon',handle=HANDLE_Weapon,ondrop=None,ontake=None,damage=30): |
| 14 | + | #.take <itemname> |
| 15 | - | self.type=type |
| 15 | + | #.drop <weapon/item/armor> |
| 16 | - | self.handle=handle |
| 16 | + | |
| 17 | - | self.ondrop=ondrop |
| 17 | + | import BrittleBones |
| 18 | - | self.ontake=ontake |
| 18 | + | |
| 19 | - | self.damage=damage |
| 19 | + | BattleBot=BrittleBones.Boner |
| 20 | ||
| 21 | GameMode='nogame' | |
| 22 | - | Alive = 1 |
| 22 | + | GameChannel="#maskbot" |
| 23 | - | Health=100 |
| 23 | + | PlayerList={}
|
| 24 | - | Magic=100 |
| 24 | + | |
| 25 | - | Weapon=None |
| 25 | + | ItemsOnGround={}
|
| 26 | - | Armor=None |
| 26 | + | |
| 27 | - | Item=None |
| 27 | + | def NormalAttack(self,user,target): |
| 28 | - | Status=[]#Poison,ninja,cloak,dead,reviveondeath |
| 28 | + | target.Health-=self.Status['damage'] |
| 29 | BattleBot.say(self.Status['damagemessage'] % {'VICTIM':target.Name, 'DAMAGE':str(self.Status['damage']),'WEAPON':self.Name,'ATTACKER':user.Name}, GameChannel)
| |
| 30 | if target.Health < 1: | |
| 31 | target.die() | |
| 32 | ||
| 33 | def CloakedAttack(self,user,target): | |
| 34 | target.Health-=self.Status['damage'] | |
| 35 | BattleBot.notice(self.Status['damagemessage'] % {'VICTIM':target.Name, 'DAMAGE':str(self.Status['damage']),'WEAPON':self.Name,'ATTACKER':user.Name}, target.Name)
| |
| 36 | if target.Health < 1: | |
| 37 | target.die() | |
| 38 | ||
| 39 | def NinjaAttack(self,user,target): | |
| 40 | target.Health-=self.Status['damage'] | |
| 41 | BattleBot.say('$(VICTIM)s took %(DAMAGE)s damage from a silenced weapon of some sort.' % {'VICTIM':target.Name, 'DAMAGE':str(self.Status['damage']),'WEAPON':self.Name,'ATTACKER':user.Name}, GameChannel)
| |
| 42 | if target.Health < 1: | |
| 43 | target.die() | |
| 44 | ||
| 45 | def HANDLE_Weapon(self,user,target): | |
| 46 | if 'cloaked' in self.Status: | |
| 47 | CloakedAttack(self,user,target) | |
| 48 | elif 'ninja' in self.Status: | |
| 49 | NinjaAttack(self,user,target) | |
| 50 | else: | |
| 51 | NormalAttack(self,user,target) | |
| 52 | ||
| 53 | def ONTAKE_Default(self,item): | |
| 54 | pass | |
| 55 | ||
| 56 | def ONDROP_Default(self,item): | |
| 57 | pass | |
| 58 | ||
| 59 | ||
| 60 | class Item(): | |
| 61 | def __init__(self,Name,ItemType="Weapon",Handle=HANDLE_Weapon,OnTake=None,OnDrop=None,Status={'addstatus':[],'damage':1,'damagemessage':'%(VICTIM)s was hit for %(DAMAGE)s damage.','deathmessage':'%(TARGET)s is dead!','uses':20,'reloadtime':5,'reloadin':0}):
| |
| 62 | self.Name=Name | |
| 63 | self.ItemType=ItemType | |
| 64 | self.Handle=HANDLE_Weapon | |
| 65 | self.OnTake=OnTake | |
| 66 | self.OnDrop=OnDrop | |
| 67 | self.Status=Status | |
| 68 | ||
| 69 | class Player(): | |
| 70 | def __init__(self,Nick,Host): | |
| 71 | self.Nick=Nick | |
| 72 | self.Host=Host | |
| 73 | self.Alive=1 | |
| 74 | self.Health=100 | |
| 75 | self.Magic=100 | |
| 76 | self.Armor=None | |
| 77 | self.Weapon=None | |
| 78 | self.Item=None | |
| 79 | self.Status=[]#Poison,ninja,cloak,dead,reviveondeath,reflect | |
| 80 | def die(self): | |
| 81 | pass | |
| 82 | def attack(self,target): | |
| 83 | if self.Weapon == None: | |
| 84 | BattleBot.notice("You have no weapon.",self.Nick)
| |
| 85 | return | |
| 86 | elif self.Weapon.Status['reloadin'] != 0: | |
| 87 | BattleBot.notice("Your weapon is still reloading.",self.Nick)
| |
| 88 | return | |
| 89 | elif target.Alive == 0: | |
| 90 | BattleBot.notice("That player is already dead.",self.Nick)
| |
| 91 | return | |
| 92 | self.Weapon.Handle(self.Weapon,self,target) | |
| 93 | def drop(self,item): | |
| 94 | item=item.lower() | |
| 95 | if self.Weapon.Name.lower() == item: | |
| 96 | BattleBot.say("%s dropped their %s." % (self.Nick,self.Weapon.Name), GameChannel)
| |
| 97 | ItemsOnGround[item] = self.Weapon | |
| 98 | self.Weapon = None | |
| 99 | elif self.Armor.Name.lower() == item: | |
| 100 | BattleBot.say("%s dropped their %s." % (self.Nick,self.Armor.Name), GameChannel)
| |
| 101 | ItemsOnGround[item] = self.Armor | |
| 102 | self.Armor = None | |
| 103 | elif self.Item.Name.lower() == item: | |
| 104 | BattleBot.say("%s dropped their %s." % (self.Nick,self.Item.Name), GameChannel)
| |
| 105 | ItemsOnGround[item] = self.Item | |
| 106 | self.Item = None | |
| 107 | else: | |
| 108 | BattleBot.notice("You don't have that.",self.Nick)
| |
| 109 | def take(self,item): | |
| 110 | item=item.lower() | |
| 111 | if item not in ItemsOnGround: | |
| 112 | BattleBot.notice("That item is not on the ground.",self.Nick)
| |
| 113 | return | |
| 114 | item = ItemsOnGround[item] | |
| 115 | elif item.ItemType=="Weapon" and self.Weapon != None: | |
| 116 | BattleBot.notice("You already have a weapon.",self.Nick)
| |
| 117 | return | |
| 118 | elif item.ItemType=="Armor" and self.Armor != None: | |
| 119 | BattleBot.notice("You already have armor.",self.Nick)
| |
| 120 | return | |
| 121 | elif item.ItemType=="Item" and self.Item != None: | |
| 122 | BattleBot.notice("You already have an item.",self.Nick)
| |
| 123 | return | |
| 124 | elif item.ItemType=="Weapon": | |
| 125 | self.Weapon=ItemsOnGround[item] | |
| 126 | elif item.ItemType=="Armor": | |
| 127 | self.Armor=ItemsOnGround[item] | |
| 128 | elif item.ItemType=="Item": | |
| 129 | self.Item=ItemsOnGround[item] | |
| 130 | ItemsOnGround.remove(item.Name.lower()) | |
| 131 | item.OnTake(self,item) | |
| 132 | BattleBot.say("The %s was taken off the ground by %s." % (item.Name,self.Name), GameChannel) |