home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 1.5)
-
- import Bladex
- import B3DLib
- import EnemyTypes
- import Actions
- import ItemTypes
- import math
- import Sounds
- import darfuncs
- import GameStateAux
- import ObjStore
-
- def EnemyReady(ent_name):
- print "Borrando '" + ent_name + "quad'"
- o = Bladex.GetEntity(ent_name + 'quad')
- if o:
- o.SubscribeToList('Pin')
-
- char = Bladex.GetEntity('Player1')
- enm = Bladex.GetEntity(ent_name)
- Bladex.AddScheduledFunc(Bladex.GetTime(), enm.SetOnFloor, ())
- enm.InitPos = pos = enm.Position
- v = (char.Position[0] - pos[0], 0.0, char.Position[2] - pos[2])
- v = B3DLib.Normalize(v)
- alfa = -(3.14159 / 2.0) * (v[0] / abs(v[0])) + math.atan(v[2] / v[0])
- enm.Face(alfa)
- enm.Blind = 0
- enm.Deaf = 0
-
-
- class Point:
-
- def __init__(self):
- self.Name = 'Skl'
- self.EnemyType = 'Skeleton'
- self.WeaponType = ''
- self.WeaponBreak = 0
- self.ShieldType = ''
- self.ShieldBreak = 0
- self.Animation = ''
- self.Position = [
- 0,
- 0,
- 0]
- self.Level = None
-
-
-
- class EnmGenRnd:
- ObjId = 0
- Active = 0
- Ready = 0
- NEnemies = 4
- NextEnemy = 0
- InitGenFunc = ''
- GenerateNotifyFunc = ''
- FinishGenFunc = ''
- InitGenArgs = ()
- NPoints = 0
- OnceEnm = 1
- EnmActivates = 0
- FinishGen = 0
- Points = [
- 0]
- Enemies = [
- 0]
- p = 0
- N_EnmGen = 0
- DifTime = 0
- VirGenPos = [
- 0,
- 0,
- 0]
- Last_Point = 0
- NumDeaths = 0
- Level = 0
- SonidoGen = None
-
- def __init__(self):
- self.ObjId = ObjStore.GetNewId()
- ObjStore.ObjectsStore[self.ObjId] = self
- self.VirGenPos = [
- 0,
- 0,
- 0]
- self.Points = [
- 0]
- self.Enemies = [
- 0]
-
-
- def GeneratorReady(self, ent_name):
- print 'Enemigo muero'
- self.NumDeaths = self.NumDeaths - 1
- if self.NumDeaths == 0:
- if self.OnEnd:
- self.OnEnd()
-
- else:
- print 'Quedan ', self.NumDeaths, 'Enemigos'
- enm = Bladex.GetEntity(ent_name)
- enm.Data.ImDeadFuncX(ent_name)
- self.Enemies[enm.Data.NEnemy] = 0
- self.EnmActivates = self.EnmActivates - 1
- self.GenerateEnemy()
- if self.FinishGen and self.EnmActivates == 0:
- if self.FinishGenFunc:
- apply(self.FinishGenFunc, (self,))
-
-
-
-
- def ActivateEnemy(self, point):
- enm = self.Enemies[self.NextEnemy]
- if enm:
- darfuncs.UnhideBadGuy(enm.Name)
- enm.Blind = 1
- enm.Deaf = 1
- enm.Position = self.Points[point].Position
- enm.Data.NEnemy = self.NextEnemy
-
- return enm
-
-
- def GenerateEnemy(self):
- enmgen = self
- char = Bladex.GetEntity('Player1')
- charpos = char.Position
- lpt = self.Last_Point
- point = self.GetBestGenerationPoint(charpos)
- self.Last_Point = lpt
- if not darfuncs.ValidAppear(self.Points[point].Position):
- Bladex.AddScheduledFunc(Bladex.GetTime() + 5.0, self.GenerateEnemy, ())
- return None
-
- if enmgen.Ready:
- nenemies = enmgen.OnceEnm - enmgen.EnmActivates
- if self.DifTime == 0:
- if nenemies > 1:
- if enmgen.NextEnemy + nenemies >= enmgen.NEnemies:
- nenemies = enmgen.NEnemies - enmgen.NextEnemy
- enmgen.Deactivate()
- enmgen.FinishGen = 1
-
- elif enmgen.NextEnemy + 1 >= enmgen.NEnemies:
- enmgen.Deactivate()
- enmgen.FinishGen = 1
-
- elif nenemies > 1:
- if enmgen.NextEnemy + nenemies >= enmgen.NEnemies:
- nenemies = enmgen.NEnemies - enmgen.NextEnemy
- enmgen.Deactivate()
- enmgen.FinishGen = 1
-
- if nenemies > 1:
- Bladex.AddScheduledFunc(Bladex.GetTime() + self.DifTime, self.GenerateEnemy, ())
- nenemies = 1
-
- elif enmgen.NextEnemy + 1 >= enmgen.NEnemies:
- enmgen.Deactivate()
- enmgen.FinishGen = 1
-
- enmgen.EnmActivates = enmgen.EnmActivates + nenemies
- t = 0
- for t in range(nenemies):
- point = self.GetBestGenerationPoint(charpos)
- enm = self.ActivateEnemy(point)
- pos = enm.Position
- enmgen.NextEnemy = enmgen.NextEnemy + 1
- v = (charpos[0] - pos[0], 0.0, charpos[2] - pos[2])
- v = B3DLib.Normalize(v)
- enm.Angle = alfa
- if enmgen.Points[point].Animation:
- enm.SetTmpAnmFlags(1, 1, 1, 0, 5, 1)
- enm.LaunchAnimation(enmgen.Points[point].Animation)
- enm.AnmEndedFunc = EnemyReady
- darfuncs.CreateFalseCube(enm.Position, -1, enm.Name)
- else:
- EnemyReady(enm.Name)
- Actions.TurnToFaceEntityNow(enm.Name, 'Player1')
- enm.Data.ImDeadFuncX = enm.ImDeadFunc
- enm.ImDeadFunc = self.GeneratorReady
- if enmgen.InitGenFunc:
- enmgen.SonidoGen.Position = pos
- enmgen.SonidoGen.PlaySound(0)
- apply(enmgen.InitGenFunc, (enm,))
-
-
-
-
-
- def GetBestGenerationPoint(self, charpos):
- point = self.p
- if point + 1 >= self.NPoints:
- self.p = 0
- else:
- self.p = self.p + 1
- for i in range(self.NPoints):
- if point != self.Last_Point:
- pos = self.Points[point].Position
- v = (charpos[0] - pos[0], 0.0, charpos[2] - pos[2])
- dist = v[0] * v[0] + v[2] * v[2]
- if dist > 3000000:
- self.Last_Point = point
- return point
-
-
- point = point + 1
- if point >= self.NPoints:
- point = 0
-
-
- self.Last_Point = point
- return point
-
-
- def AddPoint(self, pos, enemydscr = ('Skl', 'Skeleton', '', 0, '', 0), animation = '', Level = None):
- point = Point()
- point.Position = pos
- point.Name = enemydscr[0]
- point.EnemyType = enemydscr[1]
- point.WeaponBreak = enemydscr[3]
- point.WeaponType = enemydscr[2]
- point.ShieldType = enemydscr[4]
- point.ShieldBreak = enemydscr[5]
- point.Animation = animation
- point.Level = Level
- self.Points[self.NPoints:self.NPoints] = [
- point]
- self.NPoints = self.NPoints + 1
- self.NumDeaths = self.NumDeaths + 1
-
-
- def CreateEnemy(self, i):
- Rage = self.Points[i].EnemyType
- Name = self.Points[0].Name + `self.N_EnmGen`
- self.Points[i].Enm = enm = Bladex.CreateEntity(Name, Rage, self.VirGenPos[0], self.VirGenPos[1], self.VirGenPos[2], 'Person')
- if self.Points[i].Level != None:
- enm.Level = self.Points[i].Level
- else:
- enm.Level = self.Level
- enm.Blind = 1
- enm.Deaf = 1
- if self.Points[i].WeaponType:
- weapon = Bladex.CreateEntity('Weapon' + Name, self.Points[i].WeaponType, 0.0, 0.0, 0.0, 'Weapon')
- ItemTypes.ItemDefaultFuncs(weapon)
- Actions.TakeObject(Name, weapon.Name)
- weapon.RemoveFromWorld()
-
- if self.Points[i].ShieldType:
- shield = Bladex.CreateEntity('Shield' + Name, self.Points[i].ShieldType, 0.0, 0.0, 0.0, 'Weapon')
- ItemTypes.ItemDefaultFuncs(shield)
- Actions.TakeObject(Name, shield.Name)
- shield.RemoveFromWorld()
-
- EnemyTypes.EnemyDefaultFuncs(enm)
- enm.Data.enmgendata = self
- darfuncs.HideBadGuy(enm.Name)
- self.N_EnmGen = self.N_EnmGen + 1
- return enm
-
-
- def Activate(self):
- if self.NextEnemy <= self.NEnemies:
- self.Active = 1
- self.Ready = 1
- j = i = 0
- for i in range(self.NEnemies):
- en = self.CreateEnemy(j)
- if self.CallBak:
- self.CallBak(en)
-
- self.Enemies[i:i] = [
- en]
- j = j + 1
-
-
-
-
- def Deactivate(self):
- self.Active = 0
- self.Ready = 0
-
-
- def persistent_id(self):
- return self.ObjId
-
-
- def __del__(self):
- del ObjStore.ObjectsStore[self.ObjId]
-
-
- def __GetNameEnemies__(self):
- Names = []
- for i in range(self.NEnemies):
- pass
-
- return Names
-
-
- def __GetPointsGeneration__(self):
- Points = []
- for i in range(self.NPoints):
- Points.append((self.Points[i].Position, self.Points[i].Animation))
-
- return Points
-
-
- def __SetEnemies__(self, enemies):
- self.Enemies = []
- for i in range(self.NEnemies):
- pass
-
-
-
- def __SetPoints__(self, points):
- self.Points = []
- for i in range(self.NPoints):
- p = Point()
- p.Position = points[i][0]
- p.Animation = points[i][1]
- self.Points.append(p)
-
-
-
- def __getstate__(self):
- stick_objId = None
- return (1, self.ObjId, self.Ready, self.OnceEnm, self.EnmActivates, self.DifTime, self.NextEnemy, self.NEnemies, self.FinishGen, self.p, self.Active, self.NPoints, self.Last_Point, self.NumDeaths, GameStateAux.SaveFunctionAux(self.InitGenFunc), self.InitGenArgs, GameStateAux.SaveFunctionAux(self.GenerateNotifyFunc), GameStateAux.SaveFunctionAux(self.FinishGenFunc), self.__GetNameEnemies__(), self.__GetPointsGeneration__(), GameStateAux.SaveEntityAux(self.SonidoGen), GameStateAux.SaveNewMembers(self))
-
-
- def __setstate__(self, parm):
- if parm[0] == 1:
- self.ObjId = parm[1]
- ObjStore.ObjectsStore[self.ObjId] = self
- self.Ready = parm[2]
- self.OnceEnm = parm[3]
- self.EnmActivates = parm[4]
- self.DifTime = parm[5]
- self.NextEnemy = parm[6]
- self.NEnemies = parm[7]
- self.FinishGen = parm[8]
- self.p = parm[9]
- self.Active = parm[10]
- self.NPoints = parm[11]
- self.Last_Point = parm[12]
- self.NumDeaths = parm[13]
- GameStateAux.LoadFunctionAux(parm[14], self, 'InitGenFunc')
- self.InitGenArgs = parm[15]
- GameStateAux.LoadFunctionAux(parm[16], self, 'GenerateNotifyFunc')
- GameStateAux.LoadFunctionAux(parm[17], self, 'FinishGenFunc')
- self.__SetEnemies__(parm[18])
- self.__SetPoints__(parm[19])
- self.SonidoGen = GameStateAux.LoadEntityAux(parm[20])
- print 'EnmGenRnd.__setstate__ self.SonidoGen', self.SonidoGen
- GameStateAux.LoadNewMembers(self, parm[21])
- else:
- print 'Warning -> Version mismatch in EnmGenRnd.'
- self.Ready = 0
- self.OnceEnm = 0
- self.EnmActivates = 0
- self.DifTime = 0
- self.NextEnemy = 0
- self.NEnemies = 0
- self.FinisGen = 0
- self.p = 0
- self.Active = 0
- self.NPoints = 0
- self.Last_Point = 0
- self.NumDeaths = 0
- self.InitGenArgs = ()
- self.InitGenFunc = None
- self.GenerateNotifyFunc = None
- self.FinishGenFunc = None
- self.ObjId = ObjStore.GetNewId()
- ObjStore.ObjectsStore[self.ObjId] = self
-
-
-
- def CreateEnemiesGenerator(nenemies = 4, enmonce = 2, SonidoGen = '..\\..\\Sounds\\M-GENERADOR-ENTIERRA3.wav'):
- enmgen = EnmGenRnd()
- enmgen.NEnemies = nenemies
- enmgen.OnceEnm = enmonce
- enmgen.SonidoGen = Sounds.CreateEntitySound(SonidoGen, 'GenTierra')
- enmgen.SonidoGen.Volume = 0.3
- enmgen.SonidoGen.MinDistance = 5000
- enmgen.SonidoGen.MaxDistance = 20000
- enmgen.CallBak = None
- enmgen.OnEnd = None
- return enmgen
-
-
- def CreateEnemy(pos, Name, Rage, WeaponType, WeaponBreak, ShieldType, ShieldBreak, Level = 0):
- enm = Bladex.CreateEntity(Name, Rage, pos[0], pos[1], pos[2], 'Person')
- enm.Blind = 1
- enm.Deaf = 1
- enm.Level = Level
- if WeaponType:
- weapon = Bladex.CreateEntity('Weapon' + Name, WeaponType, pos[0], pos[1], pos[2], 'Weapon')
- ItemTypes.ItemDefaultFuncs(weapon)
- Actions.TakeObject(Name, weapon.Name)
-
- if ShieldType:
- shield = Bladex.CreateEntity('Shield' + Name, ShieldType, 0.0, 0.0, 0.0)
- ItemTypes.ItemDefaultFuncs(shield)
- Actions.TakeObject(Name, shield.Name)
-
- EnemyTypes.EnemyDefaultFuncs(enm)
- enm.Data.Position = pos
- darfuncs.HideBadGuy(enm.Name)
- return enm
-
-
- def ActivateEnemy(enm):
- enm.Position = enm.Data.Position
- darfuncs.UnhideBadGuy(enm.Name)
-
-