Guest User

Untitled

a guest
May 8th, 2017
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.82 KB | None | 0 0
  1. xDeath:
  2. TNT1 A 0
  3. {
  4. if(tracer)
  5. {
  6. int tempdamage = invoker.msx_damage;
  7. let trc = msxbaseEnemy(tracer);
  8. if (trc)
  9. {
  10.  
  11. tempdamage -= max(trc.msx_DT - self.msx_penetration,0);
  12. if(trc.msx_ShieldPoints)
  13. {
  14. nextstate = "hit_shield";
  15. trc.msx_ShieldPoints = max(0,trc.msx_ShieldPoints-invoker.msx_damage);
  16. if(trc.msx_ShieldPoints==0)//if this tracer popped the shield off of a monster
  17. {
  18. //shield pop effect goes here
  19. A_SpawnItemEx("shieldpop",tracer.x-self.x,tracer.y-self.y,(tracer.z-self.z)+tracer.height*0.5,0,0,0,180.0+atan2(self.y-tracer.y,self.x-tracer.x),SXF_ABSOLUTEANGLE|SXF_NOCHECKPOSITION|SXF_ABSOLUTEPOSITION|SXF_ISMASTER);
  20. if(master)
  21. {
  22. master.scale.x = max(tracer.radius*0.5,tracer.height*0.5);
  23. master.scale.y = max(tracer.radius*0.5,tracer.height*0.5);
  24. double xdist = tracer.x-self.x;
  25. double ydist = tracer.y-self.y;
  26. if(tracer)
  27. {
  28. master.tracer=self.tracer;
  29. }
  30. }
  31. }
  32. else
  33. {
  34. A_SpawnItemEx("shieldflash",tracer.x-self.x,tracer.y-self.y,(tracer.z-self.z)+tracer.height*0.5,0,0,0,180.0+atan2(self.y-tracer.y,self.x-tracer.x),SXF_ABSOLUTEANGLE|SXF_NOCHECKPOSITION|SXF_ABSOLUTEPOSITION|SXF_ISMASTER);
  35. if(master)
  36. {
  37. master.scale.x = max(tracer.radius*0.5,tracer.height*0.5);
  38. master.scale.y = max(tracer.radius*0.5,tracer.height*0.5);
  39. double xdist = tracer.x-self.x;
  40. double ydist = tracer.y-self.y;
  41. A_setpitch(-atan2(tracer.z+(tracer.height*0.5)-self.z,sqrt((xdist*xdist)+(ydist*ydist))),0,AAPTR_master);
  42. if(tracer)
  43. {
  44. master.tracer=self.tracer;
  45. }
  46. }
  47. }
  48. }
  49. else
  50. {
  51. A_damagetracer(tempdamage,msx_damagetype);
  52.  
  53. if(msx_fpiercing==true && msx_penetration>=trc.msx_DT)//makes the bullet come out the back of a target if penetrated fully
  54. {
  55. nextstate = "pierce_actor";
  56. bsolid = true;
  57. double penang = (1.0-(clamp(speed/150.0,0,1.0)))*25.0;
  58. speed *= 0.8;
  59. msx_damage *=0.8;
  60. msx_penetration *=0.8;
  61. A_SetAngle(angle+(frandom(-penang,penang)));
  62. A_SetPitch(pitch+(frandom(-penang,penang)));
  63. A_ChangeVelocity(cos(pitch) * speed,0,sin(pitch) * speed,CVF_Relative|CVF_Replace);
  64. A_SetPitch(atan2(vel.z,sqrt((vel.x*vel.x) + (vel.y*vel.y))));
  65. CanCollideWith(tracer,true);
  66. }
  67. else
  68. {
  69. nextstate = "hit_actor";
  70. }
  71. }
  72. }
  73. else //non-msx actors
  74. {
  75. nextstate = "hit_actor";
  76. A_damagetracer(tempdamage,msx_damagetype);
  77. }
  78. }
  79. return resolvestate(nextstate);
  80. }
  81. stop;
Advertisement
Add Comment
Please, Sign In to add comment