def respons(self,other): self.unit.causeDamage(other.no,Damage.MAGIC_DAMAGE(),15) for pair in other.LastSortList: if pair.value <= 3+pair.key.radiu: if not self.unit.manager.getUnit(pair.key.id)==None and not self.unit.manager.getUnit(pair.key.id).ownerid == self.unit.ownerid: self.unit.causeDamage(pair.key.id,Damage.MAGIC_DAMAGE(),15) else: break
def redetonate(self, time): self.creater.causeDamage(self.unit.no, Damage.MAGIC_DAMAGE(), 20) for pair in self.unit.LastSortList: if pair.value <= self.range + pair.key.radiu: traget = self.unit.manager.getUnit(pair.key.id) if not traget == None and not traget.ownerid == self.creater.ownerid and not traget == self.unit: self.creater.causeDamage(traget.no, Damage.MAGIC_DAMAGE(), 20) distant = (traget.circle.center - self.unit.circle.center).normalized traget.repel.begin(distant, 0.2, None, None) else: break print("_______redetonate") self.timeLeft = time
def __init__(self,radiu,unit,index): super().__init__(radiu,unit,index) self.coolDown=1.5#技能冷却时间 self.cdLeft=1.5#当前技能的剩余冷却时间 self.damageKind=Damage.MAGIC_DAMAGE() self.damageNum=10 self.missileSpeed=5
def trigger(self,damage): #print("in role{0} skill trigger:::::::::::::::::::::::::{0}".format(self.unit.no)) if damage.kind==Damage.MAGIC_DAMAGE(): if random.randint(1,100)<=65:#50%几率 #print("is magic damage") self.unit.events.append(Event(self.unit.manager.useSkill,[self.index,self.unit.no])) damage.exist=False#无效
def update(self, time): self.timeLeft -= time self.actionTime -= time if self.actionTime <= 0: self.creater.causeDamage(self.unit.no, Damage.MAGIC_DAMAGE(), 3) self.actionTime = 1 if self.timeLeft <= 0: self.unit.deleteBuff(self)
def respons(self,null): for pair in self.unit.LastSortList: if (not self.unit.manager.getUnit(pair.key.id).ownerid==self.unit.ownerid)and pair.value <= self.range +pair.key.radiu: traget=self.unit.manager.getUnit(pair.key.id) #print("in skill no2 self id{0} traget id{1} dir{2}".format(self.unit.no,traget.no,self.unit.direct)) #v1=self.unit.direct #v2=traget.circle.center-self.unit.circle.center #print("v1*v2:{0} m1*m2:{1} ans:{2}".format(v1*v2,v1.magnitude*v2.magnitude,(v1*v2)/(v1.magnitude*v2.magnitude))) if not traget==None and Vector2.angleBetween(self.unit.direct,traget.circle.center-self.unit.circle.center)<=math.pi*0.5: self.unit.causeDamage(traget.no,Damage.MAGIC_DAMAGE(),16) self.unit.AfterSkillTo(self,traget.no)
def __init__(self,radiu,unit,index): #客制化属性 self.coolDown=1.5#技能冷却时间 self.cdLeft=1.5#当前技能的剩余冷却时间 self.damageKind=Damage.MAGIC_DAMAGE() self.damageNum=10 self.missileSpeed=5 #固有代码 self.kind=Skill.ACTIVE() self.attack=True#是否是角色的基本攻击 self.range=unit.AI.FAR_RANGE(radiu)#攻击范围 self.unit=unit self.index=index#技能在角色身上的欄位索引