home *** CD-ROM | disk | FTP | other *** search
/ PC PowerPlay 56 / CDPowerplay56Disc2.iso / demos / blade / data1.cab / Program_Executable_Files / Lib / GenFX.py < prev    next >
Encoding:
Text File  |  2000-10-27  |  26.5 KB  |  615 lines

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