home *** CD-ROM | disk | FTP | other *** search
/ PC PowerPlay 56 / CDPowerplay56Disc2.iso / demos / blade / data1.cab / Program_Executable_Files / Lib / GenFX.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2000-10-27  |  27.0 KB  |  570 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 1.5)
  3.  
  4. import Bladex
  5. import AuxFuncs
  6. import whrandom
  7. import InitDataField
  8. import GameStateAux
  9. import Auras
  10. import Objects
  11. import CharStats
  12. import ObjStore
  13.  
  14. def LevelUpFX(EntityName, ColourGradation, AuraParams, AuraGradient, AuraVar1Args, AuraVar2Args, PSParams, LightIntensity, timer = 'Timer15', timespersec = 15, sound = ''):
  15.     ent = Bladex.GetEntity(EntityName)
  16.     if ColourGradation:
  17.         l = ent.Level
  18.         if ent.Level > 20:
  19.             r = 255
  20.             g = 255 * ((29.0 - l) / 8.0)
  21.             b = 0
  22.         elif ent.Level > 13:
  23.             r = 255 * ((l - 14.0) / 6.0)
  24.             g = 255
  25.             b = 0
  26.         elif ent.Level > 6:
  27.             r = 0
  28.             g = 255
  29.             b = 255 * ((13.0 - l) / 6.0)
  30.         else:
  31.             r = 0
  32.             g = 255 * (l / 6.0)
  33.             b = 255
  34.         AuraGradient = (AuraGradient[0], r / 255.0, g / 255.0, b / 255.0, AuraGradient[4], AuraGradient[5], r / 255.0, g / 255.0, b / 255.0, AuraGradient[9], AuraGradient[10])
  35.     else:
  36.         r = PSParams[3]
  37.         g = PSParams[4]
  38.         b = PSParams[5]
  39.     LevelUpParticleData = PSParams[0]
  40.     for i in range(PSParams[2]):
  41.         Bladex.SetParticleGVal(PSParams[1], i, r, g, b, LevelUpParticleData[2 * i], LevelUpParticleData[2 * i + 1])
  42.     
  43.     AuraName = EntityName + 'AuraLevelUp'
  44.     (a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2) = (AuraName, AuraVar2Args[0], AuraVar2Args[1], AuraVar2Args[2], AuraVar2Args[3], AuraVar2Args[4], 1, '', (), timer, timespersec)
  45.     (a1, b1, c1, d1, e1, f1, g1, h1, i1, j1, k1) = (AuraName, AuraVar1Args[0], AuraVar1Args[1], AuraVar1Args[2], AuraVar1Args[3], AuraVar1Args[4], 0, AuxFuncs.FadeAndScaleAura, (a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2), timer, timespersec)
  46.     alup = Bladex.CreateEntity(AuraName, 'Entity Aura', 0, 0, 0)
  47.     alup.SetAuraParams(AuraParams[0], AuraParams[1], AuraParams[2], AuraParams[3], AuraParams[4], AuraParams[5])
  48.     alup.SetAuraGradient(AuraGradient[0], AuraGradient[1], AuraGradient[2], AuraGradient[3], AuraGradient[4], AuraGradient[5], AuraGradient[6], AuraGradient[7], AuraGradient[8], AuraGradient[9], AuraGradient[10])
  49.     ent.Link(alup)
  50.     alup.SetAuraActive(1)
  51.     AuxFuncs.FadeAndScaleAura(a1, b1, c1, d1, e1, f1, g1, h1, i1, j1, k1)
  52.     PSName = EntityName + 'PSLevelUp'
  53.     pslup = Bladex.CreateEntity(PSName, 'Entity Particle System Dperson', 0, 0, 0)
  54.     pslup.PersonName = EntityName
  55.     pslup.ParticleType = PSParams[1]
  56.     pslup.PPS = PSParams[6]
  57.     pslup.YGravity = PSParams[7]
  58.     pslup.Friction = PSParams[8]
  59.     pslup.RandomVelocity = PSParams[9]
  60.     pslup.NormalVelocity = PSParams[10]
  61.     pslup.FollowFactor = PSParams[11]
  62.     pslup.Time2Live = PSParams[12]
  63.     pslup.Velocity = (0.0, 0.0, 0.0)
  64.     pslup.DeathTime = Bladex.GetTime() + PSParams[13]
  65.     LightName = EntityName + 'LightLevelUp'
  66.     llup = Bladex.CreateEntity(LightName, 'Entity Spot', 0, 0, 0)
  67.     llup.Color = (r, g, b)
  68.     llup.Intensity = 0.0
  69.     llup.Precission = 0.01
  70.     llup.CastShadows = 0
  71.     llup.Visible = 0
  72.     llup.Flick = 0
  73.     ent.Link(llup)
  74.     AuxFuncs.SpotIntensityVariation(LightName, 0.0, LightIntensity, f1 / 1.6, 0, 0.0, 0.0, timer, timespersec)
  75.     Bladex.AddScheduledFunc(Bladex.GetTime() + f1, AuxFuncs.SpotIntensityVariation, (LightName, LightIntensity, 0.0, f2 / 1.2, 1, 0.0, 0.0, timer, timespersec))
  76.  
  77.  
  78. def ChangeNodesElectricDischarge(person_name, ray_name, list_of_nodes, timespersec, endtime):
  79.     person = Bladex.GetEntity(person_name)
  80.     ray = Bladex.GetEntity(ray_name)
  81.     n1 = whrandom.randint(0, len(list_of_nodes) - 1)
  82.     n2 = whrandom.randint(0, len(list_of_nodes) - 1)
  83.     while n1 == n2:
  84.         n2 = whrandom.randint(0, len(list_of_nodes) - 1)
  85.     node1 = list_of_nodes[n1]
  86.     node2 = list_of_nodes[n2]
  87.     ray.Position = person.Rel2AbsPoint(0, 0, 0, node1)
  88.     ray.Target = person.Rel2AbsPoint(0, 0, 0, node2)
  89.     if Bladex.GetTime() > endtime:
  90.         Bladex.AddScheduledFunc(Bladex.GetTime() + 1.0 / timespersec, ray.SubscribeToList, ('Pin',))
  91.     else:
  92.         Bladex.AddScheduledFunc(Bladex.GetTime() + 1.0 / timespersec, ChangeNodesElectricDischarge, (person_name, ray_name, list_of_nodes, timespersec, endtime))
  93.  
  94.  
  95. def ElectricDischarge(person_name, ray_name, r, g, b, amplitude, list_of_nodes, timespersec, time):
  96.     person = Bladex.GetEntity(person_name)
  97.     ray = Bladex.CreateEntity(ray_name, 'Entity ElectricBolt', 0, 0, 0)
  98.     ray.Target = (0, 0, 0)
  99.     ray.FixedTarget = 0
  100.     ray.MaxAmplitude = amplitude
  101.     ray.MinSectorLength = 10000
  102.     ray.CoreGlowColor = (r, g, b)
  103.     ray.InnerGlowColor = (r / 2, g / 2, b / 2)
  104.     ray.OuterGlowColor = (0.0, 0.0, 0.0)
  105.     ray.Damage = 0
  106.     ray.Active = 1
  107.     n1 = whrandom.randint(0, len(list_of_nodes) - 1)
  108.     n2 = whrandom.randint(0, len(list_of_nodes) - 1)
  109.     while n1 == n2:
  110.         n2 = whrandom.randint(0, len(list_of_nodes) - 1)
  111.     node1 = list_of_nodes[n1]
  112.     node2 = list_of_nodes[n2]
  113.     ray.Position = person.Rel2AbsPoint(0, 0, 0, node1)
  114.     ray.Target = person.Rel2AbsPoint(0, 0, 0, node2)
  115.     endtime = Bladex.GetTime() + time
  116.     Bladex.AddScheduledFunc(Bladex.GetTime() + 1.0 / timespersec, ChangeNodesElectricDischarge, (person_name, ray_name, list_of_nodes, timespersec, endtime))
  117.  
  118.  
  119. class LightFX:
  120.     
  121.     def __init__(self):
  122.         self.Entity = 'Player1'
  123.         self.TurnOnTime = 1.0
  124.         self.TurnOffTime = 1.0
  125.         self.QuickTurnOffTime = 0.5
  126.         self.MaxIntensity = 2.0
  127.         self.TimeMaxIntensity = 2.0
  128.         self.Color = (255, 255, 255)
  129.         self.Flick = 0
  130.  
  131.  
  132.  
  133. class WeaponFX:
  134.     
  135.     def __init__(self, WeaponName, auraparams, auragradient, prtldata, lightdata):
  136.         weapon = Bladex.GetEntity(WeaponName)
  137.         self.WeaponName = WeaponName
  138.         self.Aura = ''
  139.         self.Particles = ''
  140.         self.Light = ''
  141.         if auraparams:
  142.             (s, a, ci, f, b, am) = auraparams
  143.             (m, r1, g1, b1, a1, imd, r2, g2, b2, a2, emd) = auragradient
  144.             self.Aura = Bladex.CreateEntity(WeaponName + 'Aura', 'Entity Aura', 0, 0, 0)
  145.             self.Aura.SetAuraParams(s, a, ci, f, b, am)
  146.             self.Aura.SetAuraGradient(m, r1, g1, b1, a1, imd, r2, g2, b2, a2, emd)
  147.             weapon.Link(self.Aura)
  148.             self.Aura.SetAuraActive(1)
  149.         
  150.         if prtldata:
  151.             (pt, pps, v, nv, rv, g, fr, ff, t2l) = prtldata
  152.             self.Particles = Bladex.CreateEntity(WeaponName + 'Particles', 'Entity Particle System Dobj', 0, 0, 0)
  153.             self.Particles.ObjectName = WeaponName
  154.             self.Particles.ParticleType = pt
  155.             self.Particles.PPS = pps
  156.             self.Particles.Velocity = v
  157.             self.Particles.NormalVelocity = nv
  158.             self.Particles.RandomVelocity = rv
  159.             self.Particles.YGravity = g
  160.             self.Particles.Friction = fr
  161.             self.Particles.FollowFactor = ff
  162.             self.Particles.Time2Live = t2l
  163.         
  164.         if lightdata:
  165.             (i, color, fl) = lightdata
  166.             self.Light = Bladex.CreateEntity(WeaponName + 'Light', 'Entity Spot', 0, 0, 0)
  167.             self.Light.Intensity = i
  168.             self.Light.Color = color
  169.             self.Light.Flick = fl
  170.             self.Light.CastShadows = 0
  171.             self.Light.Visible = 0
  172.             weapon.Link(self.Light)
  173.         
  174.  
  175.     
  176.     def __getstate__(self):
  177.         return (1, self.WeaponName, GameStateAux.SaveEntityAux(self.Aura), GameStateAux.SaveEntityAux(self.Particles), GameStateAux.SaveEntityAux(self.Light))
  178.  
  179.     
  180.     def __setstate__(self, parm):
  181.         if parm[0] == 1:
  182.             self.WeaponName = parm[1]
  183.             self.Aura = GameStateAux.LoadEntityAux(parm[2])
  184.             self.Particles = GameStateAux.LoadEntityAux(parm[3])
  185.             self.Light = GameStateAux.LoadEntityAux(parm[4])
  186.         else:
  187.             print 'WeaponFX.__setstate__() -> Version mismatch'
  188.             self.WeaponName = ''
  189.             self.Aura = ''
  190.             self.Particles = ''
  191.             self.Light = ''
  192.  
  193.  
  194.  
  195. def AddWeaponFX(WeaponName):
  196.     weapon = Bladex.GetEntity(WeaponName)
  197.     if not weapon:
  198.         print 'El arma especificada no existe!'
  199.         return None
  200.     
  201.     if weapon.Kind in ('QueenSword', 'VampWeapon'):
  202.         auraparams = (80, 1, 1, 0, 0, 0)
  203.         auragradient = (2, 0.8, 0.1, 0.1, 0.2, 0.0, 0.4, 0.0, 0.0, 0.0, 0.6)
  204.         if weapon.Kind == 'VampWeapon':
  205.             prtldata = ('GotasSangre', 20, (0.0, 0.0, 0.0), 0.0, 0.0, 2000.0, 0.01, 0.0, 24)
  206.         else:
  207.             prtldata = ()
  208.         lightdata = ()
  209.     elif weapon.Kind in ('CrushHammer', 'DalWeapon', 'SteelFeather'):
  210.         auraparams = (80, 1, 1, 0, 0, 0)
  211.         auragradient = (2, 0.5, 0.6, 0.0, 0.2, 0.0, 0.2, 0.3, 0.0, 0.1, 0.5)
  212.         prtldata = ('GasVenenoso', 30, (0.0, 0.0, 0.0), 0.0, 1.0, 0.0, 0.02, 0.0, 60)
  213.         lightdata = ()
  214.     elif weapon.Kind in ('FireBigSword', 'FireAxe', 'FireSword', 'FireBo'):
  215.         auraparams = (40, 1, 1, 0, 0, 1)
  216.         auragradient = (2, 0.8, 0.6, 0.0, 0.6, 0.0, 0.8, 0.1, 0.0, 0.0, 0.6)
  217.         prtldata = ('Llamita', 400, (0.0, 0.0, 0.0), 1.0, 0.0, -1000.0, 0.02, 0.0, 10)
  218.         lightdata = (1.0, (255, 120, 0), 1)
  219.         weapon.SelfIlum = 0.8
  220.     elif weapon.Kind in ('IceAxe', 'IceHammer', 'IceSword', 'TaiSword'):
  221.         auraparams = (10, 1, 1, 0, 0, 1)
  222.         auragradient = (2, 0.9, 1.0, 1.0, 0.2, 0.1, 0.4, 0.8, 1.0, 0.2, 1.0)
  223.         prtldata = ('Vaho', 20, (0.0, 0.0, 0.0), 0.0, 1.0, 150.0, 0.02, 0.0, 60)
  224.         lightdata = ()
  225.         weapon.SelfIlum = 0.2
  226.         weapon.Alpha = 0.99
  227.         weapon.RasterMode = 'AdditiveAlpha'
  228.     elif weapon.Kind in ('BladeSword2', 'BladeSword2Barbarian'):
  229.         auraparams = (80, 1, 1, 0, 0, 1)
  230.         auragradient = (2, 0.8, 0.9, 1.0, 0.6, 0.0, 0.3, 0.4, 0.9, 0.0, 0.6)
  231.         prtldata = ('BrillosBladeSword', 15, (0.0, 0.0, 0.0), 0.0, 0.0, 0.0, 0.01, 0.0, 6)
  232.         lightdata = (1.0, (235, 245, 255), 0)
  233.         weapon.SelfIlum = 0.8
  234.     else:
  235.         print 'No hay efecto definido para este tipo de arma!'
  236.         return None
  237.     InitDataField.Initialise(weapon)
  238.     weapon.Data.WeaponFX = WeaponFX(WeaponName, auraparams, auragradient, prtldata, lightdata)
  239.  
  240.  
  241. class PersonItemFX:
  242.     
  243.     def __init__(self, PersonName, ItemName, TimeEffect):
  244.         pers = Bladex.GetEntity(PersonName)
  245.         item = Bladex.GetEntity(ItemName)
  246.         time = Bladex.GetTime()
  247.         self.PersonName = PersonName
  248.         self.ItemName = ItemName
  249.         AuraParams0 = (240, 0.01, 1.0, 0, 1, 1)
  250.         AuraParams1 = (50, 1.0, 1.0, 0, 1, 1)
  251.         AuraParams2 = (40, 0.6, 1.0, 0, 1, 1)
  252.         XtraParam0 = ('Bladex.GetEntity("' + PersonName + '").SelfIlum', 0.0)
  253.         XtraParam1 = ('Bladex.GetEntity("' + PersonName + '").SelfIlum', 0.6)
  254.         XtraParam2 = ('Bladex.GetEntity("' + PersonName + '").SelfIlum', 0.1)
  255.         if item.Kind == 'PowerPotion':
  256.             AuraGradient0 = (2, 0.2, 0.4, 0.8, 1.0, 0.2, 0.0, 0.2, 0.8, 0.0, 0.7)
  257.             AuraGradient1 = (2, 0.8, 0.9, 1.0, 1.0, 0.2, 0.0, 0.2, 0.9, 0.1, 1.0)
  258.             self.Aura = Auras.MakeAura(PersonName, TimeEffect, AuraParams0, (), (), AuraGradient0, 1, XtraParam0)
  259.             self.Aura.Data.AddEvent(time + 1.0, AuraParams1, (), (), AuraGradient1, 1, XtraParam1)
  260.             self.Aura.Data.AddEvent(time + TimeEffect - 4.1, AuraParams1, (), (), AuraGradient1, 1, XtraParam1)
  261.             self.Aura.Data.AddEvent(time + TimeEffect - 3.6, AuraParams2, (), (), AuraGradient1, 1, XtraParam2)
  262.             self.Aura.Data.AddEvent(time + TimeEffect - 3.1, AuraParams1, (), (), AuraGradient1, 1, XtraParam1)
  263.             self.Aura.Data.AddEvent(time + TimeEffect - 2.7, AuraParams2, (), (), AuraGradient1, 1, XtraParam2)
  264.             self.Aura.Data.AddEvent(time + TimeEffect - 2.3, AuraParams1, (), (), AuraGradient1, 1, XtraParam1)
  265.             self.Aura.Data.AddEvent(time + TimeEffect - 2.0, AuraParams2, (), (), AuraGradient1, 1, XtraParam2)
  266.             self.Aura.Data.AddEvent(time + TimeEffect - 1.7, AuraParams1, (), (), AuraGradient1, 1, XtraParam1)
  267.             self.Aura.Data.AddEvent(time + TimeEffect - 1.5, AuraParams2, (), (), AuraGradient1, 1, XtraParam2)
  268.             self.Aura.Data.AddEvent(time + TimeEffect - 1.3, AuraParams1, (), (), AuraGradient1, 1, XtraParam1)
  269.             self.Aura.Data.AddEvent(time + TimeEffect - 1.2, AuraParams2, (), (), AuraGradient1, 1, XtraParam2)
  270.             self.Aura.Data.AddEvent(time + TimeEffect - 1.1, AuraParams1, (), (), AuraGradient1, 1, XtraParam1)
  271.             self.Aura.Data.AddEvent(time + TimeEffect - 1.05, AuraParams2, (), (), AuraGradient1, 1, XtraParam2)
  272.             self.Aura.Data.AddEvent(time + TimeEffect - 1.0, AuraParams1, (), (), AuraGradient1, 1, XtraParam1)
  273.             self.Aura.Data.AddEvent(time + TimeEffect, AuraParams0, (), (), AuraGradient0, 1, XtraParam0)
  274.         elif item.Kind == 'Brazalete':
  275.             AuraGradient0 = (2, 0.8, 0.6, 0.0, 1.0, 0.2, 0.4, 0.3, 0.0, 0.0, 0.7)
  276.             AuraGradient1 = (2, 1.0, 0.9, 0.5, 1.0, 0.1, 0.4, 0.3, 0.0, 0.0, 1.0)
  277.             self.Aura = Auras.MakeAura(PersonName, TimeEffect, AuraParams0, (), (), AuraGradient0, 1, XtraParam0)
  278.             self.Aura.Data.AddEvent(time + 1.0, AuraParams1, (), (), AuraGradient1, 1, XtraParam1)
  279.             self.Aura.Data.AddEvent(time + TimeEffect - 4.1, AuraParams1, (), (), AuraGradient1, 1, XtraParam1)
  280.             self.Aura.Data.AddEvent(time + TimeEffect - 3.6, AuraParams2, (), (), AuraGradient1, 1, XtraParam2)
  281.             self.Aura.Data.AddEvent(time + TimeEffect - 3.1, AuraParams1, (), (), AuraGradient1, 1, XtraParam1)
  282.             self.Aura.Data.AddEvent(time + TimeEffect - 2.7, AuraParams2, (), (), AuraGradient1, 1, XtraParam2)
  283.             self.Aura.Data.AddEvent(time + TimeEffect - 2.3, AuraParams1, (), (), AuraGradient1, 1, XtraParam1)
  284.             self.Aura.Data.AddEvent(time + TimeEffect - 2.0, AuraParams2, (), (), AuraGradient1, 1, XtraParam2)
  285.             self.Aura.Data.AddEvent(time + TimeEffect - 1.7, AuraParams1, (), (), AuraGradient1, 1, XtraParam1)
  286.             self.Aura.Data.AddEvent(time + TimeEffect - 1.5, AuraParams2, (), (), AuraGradient1, 1, XtraParam2)
  287.             self.Aura.Data.AddEvent(time + TimeEffect - 1.3, AuraParams1, (), (), AuraGradient1, 1, XtraParam1)
  288.             self.Aura.Data.AddEvent(time + TimeEffect - 1.2, AuraParams2, (), (), AuraGradient1, 1, XtraParam2)
  289.             self.Aura.Data.AddEvent(time + TimeEffect - 1.1, AuraParams1, (), (), AuraGradient1, 1, XtraParam1)
  290.             self.Aura.Data.AddEvent(time + TimeEffect - 1.05, AuraParams2, (), (), AuraGradient1, 1, XtraParam2)
  291.             self.Aura.Data.AddEvent(time + TimeEffect - 1.0, AuraParams1, (), (), AuraGradient1, 1, XtraParam1)
  292.             self.Aura.Data.AddEvent(time + TimeEffect, AuraParams0, (), (), AuraGradient0, 1, XtraParam0)
  293.         elif item.Kind == 'Corona':
  294.             AuraGradient0 = (2, 1.0, 0.4, 0.0, 1.0, 0.2, 1.0, 0.0, 0.0, 0.0, 0.7)
  295.             AuraGradient1 = (2, 1.0, 0.7, 0.0, 1.0, 0.1, 1.0, 0.0, 0.0, 0.0, 1.0)
  296.             self.Aura = Auras.MakeAura(PersonName, TimeEffect, AuraParams0, (), (), AuraGradient0, 1, XtraParam0)
  297.             self.Aura.Data.AddEvent(time + 1.0, AuraParams1, (), (), AuraGradient1, 1, XtraParam1)
  298.             self.Aura.Data.AddEvent(time + TimeEffect - 4.1, AuraParams1, (), (), AuraGradient1, 1, XtraParam1)
  299.             self.Aura.Data.AddEvent(time + TimeEffect - 3.6, AuraParams2, (), (), AuraGradient1, 1, XtraParam2)
  300.             self.Aura.Data.AddEvent(time + TimeEffect - 3.1, AuraParams1, (), (), AuraGradient1, 1, XtraParam1)
  301.             self.Aura.Data.AddEvent(time + TimeEffect - 2.7, AuraParams2, (), (), AuraGradient1, 1, XtraParam2)
  302.             self.Aura.Data.AddEvent(time + TimeEffect - 2.3, AuraParams1, (), (), AuraGradient1, 1, XtraParam1)
  303.             self.Aura.Data.AddEvent(time + TimeEffect - 2.0, AuraParams2, (), (), AuraGradient1, 1, XtraParam2)
  304.             self.Aura.Data.AddEvent(time + TimeEffect - 1.7, AuraParams1, (), (), AuraGradient1, 1, XtraParam1)
  305.             self.Aura.Data.AddEvent(time + TimeEffect - 1.5, AuraParams2, (), (), AuraGradient1, 1, XtraParam2)
  306.             self.Aura.Data.AddEvent(time + TimeEffect - 1.3, AuraParams1, (), (), AuraGradient1, 1, XtraParam1)
  307.             self.Aura.Data.AddEvent(time + TimeEffect - 1.2, AuraParams2, (), (), AuraGradient1, 1, XtraParam2)
  308.             self.Aura.Data.AddEvent(time + TimeEffect - 1.1, AuraParams1, (), (), AuraGradient1, 1, XtraParam1)
  309.             self.Aura.Data.AddEvent(time + TimeEffect - 1.05, AuraParams2, (), (), AuraGradient1, 1, XtraParam2)
  310.             self.Aura.Data.AddEvent(time + TimeEffect - 1.0, AuraParams1, (), (), AuraGradient1, 1, XtraParam1)
  311.             self.Aura.Data.AddEvent(time + TimeEffect, AuraParams0, (), (), AuraGradient0, 1, XtraParam0)
  312.         else:
  313.             AuraGradient0 = (2, 0.0, 1.0, 0.4, 1.0, 0.2, 0.0, 0.8, 0.0, 0.0, 0.7)
  314.             AuraGradient1 = (2, 0.0, 1.0, 0.7, 1.0, 0.1, 0.0, 0.6, 0.0, 0.0, 1.0)
  315.             self.Aura = Auras.MakeAura(PersonName, TimeEffect, AuraParams0, (), (), AuraGradient0, 1, XtraParam0)
  316.             self.Aura.Data.AddEvent(time + 1.0, AuraParams1, (), (), AuraGradient1, 1, XtraParam1)
  317.             self.Aura.Data.AddEvent(time + TimeEffect - 4.1, AuraParams1, (), (), AuraGradient1, 1, XtraParam1)
  318.             self.Aura.Data.AddEvent(time + TimeEffect - 3.6, AuraParams2, (), (), AuraGradient1, 1, XtraParam2)
  319.             self.Aura.Data.AddEvent(time + TimeEffect - 3.1, AuraParams1, (), (), AuraGradient1, 1, XtraParam1)
  320.             self.Aura.Data.AddEvent(time + TimeEffect - 2.7, AuraParams2, (), (), AuraGradient1, 1, XtraParam2)
  321.             self.Aura.Data.AddEvent(time + TimeEffect - 2.3, AuraParams1, (), (), AuraGradient1, 1, XtraParam1)
  322.             self.Aura.Data.AddEvent(time + TimeEffect - 2.0, AuraParams2, (), (), AuraGradient1, 1, XtraParam2)
  323.             self.Aura.Data.AddEvent(time + TimeEffect - 1.7, AuraParams1, (), (), AuraGradient1, 1, XtraParam1)
  324.             self.Aura.Data.AddEvent(time + TimeEffect - 1.5, AuraParams2, (), (), AuraGradient1, 1, XtraParam2)
  325.             self.Aura.Data.AddEvent(time + TimeEffect - 1.3, AuraParams1, (), (), AuraGradient1, 1, XtraParam1)
  326.             self.Aura.Data.AddEvent(time + TimeEffect - 1.2, AuraParams2, (), (), AuraGradient1, 1, XtraParam2)
  327.             self.Aura.Data.AddEvent(time + TimeEffect - 1.1, AuraParams1, (), (), AuraGradient1, 1, XtraParam1)
  328.             self.Aura.Data.AddEvent(time + TimeEffect - 1.05, AuraParams2, (), (), AuraGradient1, 1, XtraParam2)
  329.             self.Aura.Data.AddEvent(time + TimeEffect - 1.0, AuraParams1, (), (), AuraGradient1, 1, XtraParam1)
  330.             self.Aura.Data.AddEvent(time + TimeEffect, AuraParams0, (), (), AuraGradient0, 1, XtraParam0)
  331.  
  332.     
  333.     def __getstate__(self):
  334.         return (1, self.PersonName, self.ItemName, GameStateAux.SaveEntityAux(self.Aura))
  335.  
  336.     
  337.     def __setstate__(self, parm):
  338.         if parm[0] == 1:
  339.             self.PersonName = parm[1]
  340.             self.ItemName = parm[2]
  341.             self.Aura = GameStateAux.LoadEntityAux(parm[3])
  342.         else:
  343.             print 'ItemFX.__setstate__() -> Version mismatch'
  344.             self.PersonName = ''
  345.             self.ItemName = ''
  346.             self.Aura = ''
  347.  
  348.  
  349.  
  350. def AddPersonItemFX(PersonName, ItemName, TimeEffect):
  351.     pers = Bladex.GetEntity(PersonName)
  352.     item = Bladex.GetEntity(ItemName)
  353.     if not item or item.Kind not in ('PowerPotion', 'Amuletofantasma', 'Brazalete', 'Corona'):
  354.         print 'El item especificado no existe no hay efecto definido para este tipo de item!'
  355.         return None
  356.     
  357.     pers.Data.PersonItemFX = PersonItemFX(PersonName, ItemName, TimeEffect)
  358.  
  359.  
  360. def ChangeRasterMode(ent_name, mode):
  361.     Bladex.GetEntity(ent_name).RasterMode = mode
  362.  
  363.  
  364. def PersonMagicallyAppearing():
  365.     TimeEffect = 2.0
  366.     time = Bladex.GetTime()
  367.     char = Bladex.GetEntity('Player1')
  368.     char.Alpha = 0.01
  369.     char.RasterMode = 'Read'
  370.     Bladex.AddScheduledFunc(time + TimeEffect, ChangeRasterMode, ('Player1', 'Full'))
  371.     AuxFuncs.FadeObject('Player1', 0.01, 1.0, 2.0)
  372.     if char.InvLeft != '':
  373.         obj = Bladex.GetEntity(char.InvLeft)
  374.         obj.RasterMode = 'Read'
  375.         Bladex.AddScheduledFunc(time + TimeEffect, ChangeRasterMode, (char.InvLeft, 'Full'))
  376.         AuxFuncs.FadeObject(char.InvLeft, 0.01, obj.Alpha, TimeEffect)
  377.     
  378.     if char.InvRight != '':
  379.         obj = Bladex.GetEntity(char.InvRight)
  380.         obj.RasterMode = 'Read'
  381.         Bladex.AddScheduledFunc(time + TimeEffect, ChangeRasterMode, (char.InvRight, 'Full'))
  382.         AuxFuncs.FadeObject(char.InvRight, 0.01, obj.Alpha, TimeEffect)
  383.     
  384.     if char.InvLeftBack != '':
  385.         obj = Bladex.GetEntity(char.InvLeftBack)
  386.         obj.RasterMode = 'Read'
  387.         Bladex.AddScheduledFunc(time + TimeEffect, ChangeRasterMode, (char.InvLeftBack, 'Full'))
  388.         AuxFuncs.FadeObject(char.InvLeftBack, 0.01, obj.Alpha, TimeEffect)
  389.     
  390.     if char.InvRightBack != '':
  391.         obj = Bladex.GetEntity(char.InvRightBack)
  392.         obj.RasterMode = 'Read'
  393.         Bladex.AddScheduledFunc(time + TimeEffect, ChangeRasterMode, (char.InvRightBack, 'Full'))
  394.         AuxFuncs.FadeObject(char.InvRightBack, 0.01, obj.Alpha, TimeEffect)
  395.     
  396.     AuraParams0 = (240, 0.01, 1.0, 0, 1, 1)
  397.     AuraParams1 = (50, 1.0, 1.0, 0, 1, 1)
  398.     AuraParams2 = (50, 0.01, 1.0, 0, 1, 1)
  399.     AuraGradient0 = (2, 0.2, 0.4, 0.8, 1.0, 0.2, 0.0, 0.2, 0.8, 0.0, 0.7)
  400.     AuraGradient1 = (2, 0.8, 0.9, 1.0, 1.0, 0.2, 0.0, 0.2, 0.9, 0.1, 1.0)
  401.     aura = Auras.MakeAura('Player1', TimeEffect, AuraParams0, (), (), AuraGradient0)
  402.     aura.Data.AddEvent(time + TimeEffect / 2.0, AuraParams1, (), (), AuraGradient1)
  403.     aura.Data.AddEvent(time + TimeEffect, AuraParams2, (), (), AuraGradient0)
  404.     ps = Bladex.CreateEntity('PSPersonMagicallyAppearing', 'Entity Particle System Dperson', 0.0, 0.0, 0.0)
  405.     ps.PersonName = 'Player1'
  406.     ps.ParticleType = 'FastEnergyConc'
  407.     ps.PPS = 200
  408.     ps.YGravity = 0.0
  409.     ps.Friction = 0.0
  410.     ps.Velocity = (0.0, 0.0, 0.0)
  411.     ps.RandomVelocity = 0.5
  412.     ps.NormalVelocity = -2.0
  413.     ps.Time2Live = 30
  414.     ps.DeathTime = time + TimeEffect / 2.0
  415.  
  416.  
  417. def PersonMagicallyDisappearing():
  418.     TimeEffect = 2.0
  419.     time = Bladex.GetTime()
  420.     char = Bladex.GetEntity('Player1')
  421.     char.Alpha = 1.0
  422.     char.RasterMode = 'Read'
  423.     AuxFuncs.FadeObject('Player1', 1.0, 0.01, TimeEffect)
  424.     if char.InvLeft != '':
  425.         obj = Bladex.GetEntity(char.InvLeft)
  426.         obj.RasterMode = 'Read'
  427.         AuxFuncs.FadeObject(char.InvLeft, obj.Alpha, 0.01, TimeEffect)
  428.     
  429.     if char.InvRight != '':
  430.         obj = Bladex.GetEntity(char.InvRight)
  431.         obj.RasterMode = 'Read'
  432.         AuxFuncs.FadeObject(char.InvRight, obj.Alpha, 0.01, TimeEffect)
  433.     
  434.     if char.InvLeftBack != '':
  435.         obj = Bladex.GetEntity(char.InvLeftBack)
  436.         obj.RasterMode = 'Read'
  437.         AuxFuncs.FadeObject(char.InvLeftBack, obj.Alpha, 0.01, TimeEffect)
  438.     
  439.     if char.InvRightBack != '':
  440.         obj = Bladex.GetEntity(char.InvRightBack)
  441.         obj.RasterMode = 'Read'
  442.         AuxFuncs.FadeObject(char.InvRightBack, obj.Alpha, 0.01, TimeEffect)
  443.     
  444.     AuraParams0 = (240, 0.01, 1.0, 0, 1, 1)
  445.     AuraParams1 = (50, 1.0, 1.0, 0, 1, 1)
  446.     AuraParams2 = (50, 0.01, 1.0, 0, 1, 1)
  447.     AuraGradient0 = (2, 0.2, 0.4, 0.8, 1.0, 0.2, 0.0, 0.2, 0.8, 0.0, 0.7)
  448.     AuraGradient1 = (2, 0.8, 0.9, 1.0, 1.0, 0.2, 0.0, 0.2, 0.9, 0.1, 1.0)
  449.     aura = Auras.MakeAura('Player1', TimeEffect, AuraParams2, (), (), AuraGradient0)
  450.     aura.Data.AddEvent(time + TimeEffect / 2.0, AuraParams1, (), (), AuraGradient1)
  451.     aura.Data.AddEvent(time + TimeEffect, AuraParams0, (), (), AuraGradient0)
  452.     ps = Bladex.CreateEntity('PSPersonMagicallyAppearing', 'Entity Particle System Dperson', 0.0, 0.0, 0.0)
  453.     ps.PersonName = 'Player1'
  454.     ps.ParticleType = 'EnergyDissip'
  455.     ps.PPS = 200
  456.     ps.YGravity = 0.0
  457.     ps.Friction = 0.0
  458.     ps.Velocity = (0.0, 0.0, 0.0)
  459.     ps.RandomVelocity = 0.5
  460.     ps.NormalVelocity = 2.0
  461.     ps.Time2Live = 60
  462.     ps.DeathTime = time + TimeEffect / 3.0
  463.  
  464.  
  465. class MagicTransport:
  466.     
  467.     def __init__(self, trsector_name, magictr_position):
  468.         self.Position = (x, y, z) = magictr_position
  469.         self.TrSectorMax = trsector_name
  470.         self.TrSectorMin = trsector_name + '_In'
  471.         self.MagicCilinder = Bladex.CreateEntity(trsector_name + '_Cil', 'CilindroTransportador', x, y, z)
  472.         self.MagicCilinder.Orientation = (0.707107, 0.707107, 0.0, 0.0)
  473.         self.MagicCilinder.Scale = 0.1
  474.         self.MagicCilinder.Alpha = 0.0
  475.         self.MagicCilinder.CastShadows = 0
  476.         self.AGE_Number = 0
  477.         Bladex.AddTriggerSector(trsector_name + '_In', 'Transportadores', y + 1150.0, y - 1150.0, [
  478.             (x + 500.0, z + 500.0),
  479.             (x - 500.0, z + 500.0),
  480.             (x - 500.0, z - 500.0),
  481.             (x + 500.0, z - 500.0)])
  482.         Bladex.SetTriggerSectorFunc(trsector_name + '_In', 'OnEnter', self.UseMagicTransport)
  483.         Bladex.SetTriggerSectorFunc(trsector_name, 'OnEnter', self.OpenMagicTransport)
  484.         Bladex.SetTriggerSectorFunc(trsector_name, 'OnLeave', self.CloseMagicTransport)
  485.         self.ObjId = ObjStore.GetNewId()
  486.         ObjStore.ObjectsStore[self.ObjId] = self
  487.  
  488.     
  489.     def persistent_id(self):
  490.         return self.ObjId
  491.  
  492.     
  493.     def __getstate__(self):
  494.         return (1, self.ObjId, self.Position, self.TrSectorMax, self.TrSectorMin, self.AGE_Number, GameStateAux.SaveEntityAux(self.MagicCilinder))
  495.  
  496.     
  497.     def __setstate__(self, parm):
  498.         if parm[0] == 1:
  499.             self.ObjId = parm[1]
  500.             ObjStore.ObjectsStore[self.ObjId] = self
  501.             self.Position = parm[2]
  502.             self.TrSectorMax = parm[3]
  503.             self.TrSectorMin = parm[4]
  504.             self.AGE_Number = parm[5]
  505.             self.MagicCilinder = GameStateAux.LoadEntityAux(parm[6])
  506.         else:
  507.             print 'MagicTransport.__setstate__() -> Version mismatch'
  508.             self.ObjId = ObjStore.GetNewId()
  509.             ObjStore.ObjectsStore[self.ObjId] = self
  510.             self.Position = ''
  511.             self.TrSectorMax = ''
  512.             self.TrSectorMin = ''
  513.             self.AGE_Number = ''
  514.             self.MagicCilinder = ''
  515.  
  516.     
  517.     def RotateMagicCilinderGrad(self, obj_name, time):
  518.         self.MagicCilinder.RotateRel(0, 0, 0, 0, 0, 1, 0.08)
  519.  
  520.     
  521.     def RotateMagicCilinder(self):
  522.         self.MagicCilinder.TimerFunc = self.RotateMagicCilinderGrad
  523.         self.MagicCilinder.SubscribeToList('Timer30')
  524.  
  525.     
  526.     def OpenMagicTransport(self, trsector, ent_name):
  527.         import GameText
  528.         AuxFuncs.ScaleObjectV2(self.MagicCilinder.Name, self.MagicCilinder.Scale, 1.0, -1, 2.0, self.RotateMagicCilinderGrad, (0, 0), self.RotateMagicCilinder, (), 0)
  529.         self.AGE_Number = self.AGE_Number + 1
  530.         openps = Bladex.CreateEntity(self.MagicCilinder.Name + '_PS_' + `self.AGE_Number`, 'Entity Particle System Dobj', 0.0, 0.0, 0.0)
  531.         openps.ObjectName = self.MagicCilinder.Name
  532.         openps.ParticleType = 'LittleEnergyDissip'
  533.         openps.PPS = 600
  534.         openps.YGravity = 0.0
  535.         openps.Friction = 0.0
  536.         openps.Velocity = (0.0, 0.0, 0.0)
  537.         openps.RandomVelocity = 0.0
  538.         openps.NormalVelocity = 0.0
  539.         openps.Time2Live = 30
  540.         GameText.ShowMessage('Entra en el transportador para abandonar el mapa')
  541.  
  542.     
  543.     def CloseMagicTransport(self, trsector, ent_name):
  544.         import GameText
  545.         openps = Bladex.GetEntity(self.MagicCilinder.Name + '_PS_' + `self.AGE_Number`)
  546.         if openps:
  547.             openps.DeathTime = Bladex.GetTime() + 2.0
  548.             AuxFuncs.ScaleObjectV2(self.MagicCilinder.Name, self.MagicCilinder.Scale, 0.1, 1, 2.0, self.RotateMagicCilinderGrad, (0, 0), '', (), 0)
  549.             GameText.HideMessage()
  550.         
  551.  
  552.     
  553.     def UseMagicTransport(self, trsector, ent_name):
  554.         import GotoMapVars
  555.         import Scorer
  556.         Bladex.RemoveTriggerSectorFunc(trsector, 'OnEnter')
  557.         Bladex.DeactivateInput()
  558.         Scorer.SetVisible(0)
  559.         PersonMagicallyDisappearing()
  560.         self.CloseMagicTransport(0, 0)
  561.         Bladex.AddScheduledFunc(Bladex.GetTime() + 2.0, AuxFuncs.FadeTo, (2.0, 2.0))
  562.         Bladex.AddScheduledFunc(Bladex.GetTime() + 4.0, GotoMapVars.EndOfLevel, ())
  563.  
  564.  
  565.  
  566. def CreateMagicTransport(trsector_name, magictr_position):
  567.     magictr = MagicTransport(trsector_name, magictr_position)
  568.     return magictr
  569.  
  570.