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

  1. import Bladex
  2. import math
  3.  
  4. Evaporation      = 0      #  no evaporation avail  >:-(
  5. AfterCreateBlood = None   # CARLOS! PLEAS DON'T SAVE THIS VALUE...
  6.  
  7. def BloodPrtlHit(prtl_name,hit_entity,x,y,z,vx,vy,vz,wcx,wcy,wcz,wdx,wdy,wdz):
  8.     global Evaporation
  9.     p = Bladex.CreateEntity("BloodPool","Entity Pool",x,y,z)
  10.     if Evaporation:
  11.         p.DeathTime = Bladex.GetTime()+50.0
  12.     if AfterCreateBlood:
  13.         AfterCreateBlood(x,y,z)
  14.     
  15. def GreenBloodPrtlHit(prtl_name,hit_entity,x,y,z,vx,vy,vz,wcx,wcy,wcz,wdx,wdy,wdz):
  16.     global Evaporation
  17.     p=Bladex.CreateEntity("BloodPool","Entity Pool",x,y,z)
  18.     p.Color = (96,192,96)
  19.     p.DeepColor = (64,128,64)
  20.     if Evaporation:
  21.         p.DeathTime = Bladex.GetTime()+50.0
  22.         
  23.     # Generate a smoke effect
  24.     smoke=Bladex.CreateEntity("FuegoVerde", "Entity Particle System D1", x, y, z)
  25.     smoke.ParticleType="VenomSmoke"
  26.     smoke.YGravity=-100.0
  27.     smoke.Friction=0.05
  28.     smoke.PPS=8
  29.     smoke.Velocity=0.0, -800.0, 0.0
  30.     smoke.RandomVelocity=5.0
  31.     smoke.DeathTime=Bladex.GetTime()+1.5
  32.  
  33. def GreyBloodPrtlHit(prtl_name,hit_entity,x,y,z,vx,vy,vz,wcx,wcy,wcz,wdx,wdy,wdz):    
  34.     global Evaporation
  35.     p=Bladex.CreateEntity("BloodPool","Entity Pool",x,y,z)
  36.     p.Color = (96,96,96)
  37.     p.DeepColor = (80,80,80)
  38.     if Evaporation:
  39.         p.DeathTime = Bladex.GetTime()+50.0
  40.  
  41.  
  42. def BleedFunc(blood_name,end_time,period):
  43.     blood=Bladex.GetEntity(blood_name)
  44.     if(blood):
  45.         prtl=blood.GetParticleEntity()
  46.         if blood.ParticleType=="GreenBlood":
  47.             prtl.HitFunc=GreenBloodPrtlHit
  48.         elif blood.ParticleType=="GreyBlood":
  49.             prtl.HitFunc=GreyBloodPrtlHit
  50.         else:                        
  51.             prtl.HitFunc=BloodPrtlHit
  52.             
  53.         if(Bladex.GetTime()<end_time):
  54.             Bladex.AddScheduledFunc(Bladex.GetTime()+period,BleedFunc,(blood_name,end_time,period),blood.Name+" BleedFunc")
  55.  
  56. AGE_Number=0
  57. def Bleed(objname,start_time,end_time,period,x=0.0,y=0.0,z=0.0,vx=0,vy=0,vz=0,ParticleType="Blood"):
  58.     global AGE_Number
  59.     AGE_Number=AGE_Number+1
  60.     blood=Bladex.CreateEntity("bleed_AGE_"+str(AGE_Number),"Entity Particle System D1",x,y,z)
  61.     blood.ParticleType=ParticleType
  62.     blood.YGravity=9800.0
  63.     blood.Friction=0.075
  64.     blood.PPS=512
  65.     blood.DeathTime=end_time+1.0/60.0;
  66.     blood.Velocity=vx,vy,vz
  67.     Bladex.GetEntity(objname).Link(blood)
  68.     Bladex.AddScheduledFunc(start_time,BleedFunc,(blood.Name,end_time,period),blood.Name+" BleedFunc")
  69.  
  70. def PersonBleed(per,start_time,end_time,period,x=0.0,y=0.0,z=0.0,vx=0,vy=0,vz=0,node=0):
  71.     global AGE_Number
  72.     if(node<0):
  73.         print("invalid node")
  74.         return
  75.  
  76.     AGE_Number=AGE_Number+1
  77.     blood=Bladex.CreateEntity("bleed_AGE_"+str(AGE_Number),"Entity Particle System D1",x,y,z)
  78.     if per.Kind=="Spidersmall":
  79.         blood.ParticleType="GreenBlood"
  80.     elif per.Kind=="Lich":
  81.         blood.ParticleType="GreyBlood"
  82.  
  83.     else:                
  84.         blood.ParticleType="Blood"
  85.     blood.YGravity=9800.0
  86.     blood.Friction=0.075
  87.     blood.PPS=512
  88.     blood.DeathTime=end_time+1.0/60.0;
  89.     blood.Velocity=vx,vy,vz
  90.     per.LinkToNode(blood,node)
  91.     Bladex.AddScheduledFunc(start_time,BleedFunc,(blood.Name,end_time,period),blood.Name+" BleedFunc")
  92.  
  93.  
  94. # Lista de entidades que tiran polvo
  95. SparkEntities     = ["Golem_metal","ChaosKnight"]
  96. DustDeathEntities = ["Skeleton","Lich","Golem_stone","Golem_clay","Golem_lava","Knight_Zombie"]+SparkEntities
  97.  
  98. def Mutilate(pj_name,obj_name,x,y,z,nx,ny,nz,node):
  99.     global DustDeathEntities
  100.     global SparkEntities
  101.     
  102.     vx=nx*2000.0
  103.     vy=ny*2000.0
  104.     vz=nz*2000.0
  105.     per= Bladex.GetEntity(pj_name)
  106.     if per.Kind in DustDeathEntities:
  107.         return
  108.     if per.Kind=="Spidersmall":
  109.         Bleed(obj_name,Bladex.GetTime()+0.0,Bladex.GetTime()+1.0,0.2,x,y,z,vx,vy,vz,"GreenBlood")
  110.     elif per.Kind=="Lich":
  111.         Bleed(obj_name,Bladex.GetTime()+0.0,Bladex.GetTime()+1.0,0.2,x,y,z,vx,vy,vz,"GreyBlood")
  112.     else:                    
  113.         Bleed(obj_name,Bladex.GetTime()+0.0,Bladex.GetTime()+1.0,0.2,x,y,z,vx,vy,vz)
  114.     x,y,z=Bladex.GetEntity(obj_name).Rel2AbsPoint(x,y,z)
  115.     PersonBleed(per,Bladex.GetTime()+0.0,Bladex.GetTime()+1.5,0.125,x,y,z,-2.0*vx,-2.0*vy,-2.0*vz,node)
  116.  
  117.  
  118.  
  119. def BleedingImpact(entity, x, y, z, ImpX, ImpY, ImpZ, weapon_entity,WeaponCx, WeaponCy, WeaponCz,WeaponDx, WeaponDy, WeaponDz):
  120.     global AGE_Number
  121.     global DustDeathEntities
  122.     global SparkEntities
  123.     
  124.     AGE_Number=AGE_Number+1    
  125.     
  126.     if entity.Kind in DustDeathEntities:
  127.         
  128.         dust=Bladex.CreateEntity("dust_AGE_"+str(AGE_Number),"Entity Particle System D1", x, y, z)
  129.         if entity.Kind == "Golem_clay":
  130.             dust.ParticleType="ShitSmoke"
  131.             dust.Time2Live=63
  132.             dust.PPS=60
  133.             dust.RandomVelocity=30.0
  134.         elif entity.Kind == "Golem_lava":
  135.             dust.ParticleType="LargeFire"
  136.             dust.Time2Live=31
  137.             dust.PPS=60
  138.             dust.RandomVelocity=30.0
  139.         elif entity.Kind in SparkEntities:
  140.             dust.ParticleType="Splinter"
  141.             dust.Time2Live=16
  142.             dust.PPS=128
  143.             dust.RandomVelocity=50.0
  144.         else:
  145.             dust.ParticleType="MediumDust"
  146.             dust.Time2Live=63
  147.             dust.PPS=60
  148.             dust.RandomVelocity=30.0
  149.             
  150.         dust.YGravity=0.0
  151.         dust.Friction=0.1
  152.         dust.Velocity=0.0, 0.0, 0.0
  153.         
  154.         dust.DeathTime=Bladex.GetTime()+4.0/60.0
  155.     
  156.     else:
  157.         time=Bladex.GetTime()
  158.         
  159.         if (weapon_entity):
  160.             stickblood=Bladex.CreateEntity("stickbleed_AGE_"+str(AGE_Number),"Entity Particle System D2", WeaponCx, WeaponCy, WeaponCz)
  161.             stickblood.D=WeaponDx, WeaponDy, WeaponDz
  162.             stickblood.YGravity=9800.0
  163.             stickblood.Friction=0.15
  164.             stickblood.Friction2=0.0
  165.             stickblood.DeathTime=time+0.4
  166.             
  167.             stickblood.RandomVelocity=100.0/60
  168.             stickblood.RandomVelocity_V=100.0/60
  169.             stickblood.Time2Live=26.0 # Maybe not necessarary
  170.             stickblood.Time2Live_V=6.0
  171.             stickblood.PPS=600
  172.             weapon_entity.Link(stickblood)
  173.         else:
  174.             stickblood=None
  175.         
  176.         
  177.         blood=Bladex.CreateEntity("bleed_AGE_"+str(AGE_Number),"Entity Particle System D1", x, y, z)
  178.         blood.YGravity=9800.0
  179.         blood.Friction=0.075
  180.         blood.PPS=600
  181.         blood.DeathTime=time+10.0/60.0;
  182.         blood.Position=x, y, z        
  183.         scale= math.sqrt(ImpX*ImpX+ImpY*ImpY+ImpZ*ImpZ)
  184.         if scale==0.0:
  185.             scale=1.0
  186.         scale = -2000.0 / scale # normalized scale by -2000.0
  187.         blood.Velocity=(ImpX*scale), (ImpY*scale)-2000.0, (ImpZ*scale)
  188.         blood.RandomVelocity=15.0
  189.         blood.RandomVelocity_V=10.0
  190.         blood.Time2Live=32
  191.         if stickblood:
  192.             prtl1=stickblood.GetParticleEntity()
  193.         else:
  194.             prtl1=blood.GetParticleEntity()
  195.         prtl2=blood.GetParticleEntity()        
  196.         if entity.Kind=="Spidersmall":
  197.             blood.ParticleType="GreenBlood"
  198.             if stickblood:
  199.                 stickblood.ParticleType="GreenBlood"
  200.             prtl1.HitFunc=GreenBloodPrtlHit
  201.             prtl2.HitFunc=GreenBloodPrtlHit
  202.         elif entity.Kind=="Lich":
  203.             blood.ParticleType="GreyBlood"
  204.             if stickblood:
  205.                 stickblood.ParticleType="GreyBlood"
  206.             prtl1.HitFunc=GreyBloodPrtlHit
  207.             prtl2.HitFunc=GreyBloodPrtlHit
  208.         else:                        
  209.             blood.ParticleType="Blood"
  210.             if stickblood:
  211.                 stickblood.ParticleType="Blood"
  212.             prtl1.HitFunc=BloodPrtlHit
  213.             prtl2.HitFunc=BloodPrtlHit
  214.             
  215.         
  216.