View difference between Paste ID: PGTxUh3v and E17MC1k2
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)