Advertisement
scroton

Untitled

Oct 30th, 2014
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.72 KB | None | 0 0
  1. //acs
  2. //switched to condense but extra functionality if uses all three args, can clamp zvelocity
  3.  
  4. case WEEB_DEC_JUMPATTACK:
  5. int WeebActorOldTid = ActivatorTID();
  6. int WeebTargetTid = unusedTID(6000,8000);
  7. int WeebActorTid = unusedTID(8001,10000);
  8. int WeebDummyProjectileTid = unusedTID(10001,12001);
  9. int WeebDummyProjectileSpeed = (a1 * 8);
  10.  
  11. if (a1 == 0) { a1 = 30; }
  12. if (a2 == 0) { a2 = 0x7FFFFFFF; }
  13. int a3; //whoops forgot I could only use 3 args, but might come in handy in another script, remove this line if get arg back
  14. if (a3 == 0) { a3 = 8; }
  15.  
  16. int ActorX = GetActorX(0) / 65536;
  17. int Actory = GetActorY(0) / 65536;
  18. int ActorZ = GetActorZ(0) / 65536;
  19.  
  20. GiveInventory("JumpFlagsOn", 1);
  21. ACS_Execute(267,0,21);
  22. Thing_ChangeTID(0,WeebActorTid);
  23.  
  24. SetActivatorToTarget(0);
  25. int WeebTargetOldTid = ActivatorTID();
  26.  
  27. if (ClassifyActor(0) == ACTOR_PLAYER) { WeebTargetTid = ActivatorTID(); }
  28. else if (ActivatorTID() == !0) { if (ThingCount(T_NONE,ActivatorTID()) == 1) { WeebTargetTid = ActivatorTID(); }}
  29. else { Thing_ChangeTID(0,WeebTargetTid); }
  30.  
  31. Thing_ProjectileIntercept(WeebActorTid,200,WeebDummyProjectileSpeed,0,WeebDummyProjectileTid);
  32. int WeebDummyProjectileAngle = GetActorAngle(WeebDummyProjectileTid);
  33. SetActorAngle(WeebActorTid,WeebDummyProjectileAngle);
  34.  
  35. int TargetX = GetActorX(0) / 65536;
  36. int Targety = GetActorY(0) / 65536;
  37. int TargetZ = GetActorZ(0) / 65536;
  38. int DiffX = (TargetX - ActorX);
  39. int DiffY = (TargetY - ActorY);
  40. int DiffZ = (TargetZ - ActorZ);
  41. int DiffSquaredX = abs(DiffX * DiffX);
  42. int DiffSquaredY = abs(DiffY * DiffY);
  43.  
  44. int FlatDistance = sqrt_i(DiffSquaredX + DiffSquaredY);
  45. int TimeToHit = abs(FlatDistance / a1);
  46. if (TimeToHit <= 0) { TimeToHit = 1; }
  47. int ExtraPep = ( FlatDistance ) / 150;
  48. if (ExtraPep > a3) { ExtraPep = a3; }
  49. int GravityToOvercome = (GetActorProperty(WeebActorTid,APROP_Gravity) * TimeToHit) / 65536;
  50.  
  51. int TotalZVelNeeded = (DiffZ / TimeToHit) + GravityToOvercome + ExtraPep;
  52. if (TotalZVelNeeded > a2) { TotalZVelNeeded = a2; }
  53. if (TotalZVelNeeded < 0) { TotalZVelNeeded = 0; }
  54. int TotalZVelNeededFixed = TotalZVelNeeded * 65536;
  55.  
  56. /*
  57. Log(s: "Target X:", d:TargetX);
  58. Log(s: "Target Y:", d:TargetY);
  59. Log(s: "Target Z:", d:TargetZ);
  60.  
  61. Log(s: "Actor X:", d:ActorX);
  62. Log(s: "Actor Y:", d:ActorY);
  63. Log(s: "Actor Z:", d:ActorZ);
  64.  
  65. Log(s: "Diff X:", d:DiffX);
  66. Log(s: "Diff Y:", d:DiffY);
  67. Log(s: "Diff Z:", d:DiffZ);
  68.  
  69. Log(s: "DiffSquared X:", d:DiffSquaredX);
  70. Log(s: "DiffSquared Y:", d:DiffSquaredY);
  71.  
  72. Log(s: "Flat Distance:", d:FlatDistance);
  73.  
  74. Log(s: "ExtraPep:", d:ExtraPep);
  75. Log(s: "GravityToOvercome:", d:GravityToOvercome);
  76. Log(s: "TotalZVelNeeded:", d:TotalZVelNeeded);
  77. */
  78.  
  79. int WeebDummyProjectileAngleByte = (WeebDummyProjectileAngle * 256/65536);
  80. SetActorVelocity(WeebActorTid,0,0,TotalZVelNeededFixed,0,0);
  81. ThrustThing(WeebDummyProjectileAngleByte,a1,1,WeebActorTid);
  82.  
  83. if (ClassifyActor(0) == !ACTOR_PLAYER) { Thing_ChangeTID(0,WeebTargetOldTid); }
  84. Thing_ChangeTID(WeebActorTid,WeebActorOldTid);
  85. break;
  86.  
  87.  
  88. case 22:
  89. Delay(1);
  90. TakeInventory("JumpFlagsOn", 1);
  91. GiveInventory("JumpFlagsOff", 1);
  92. Terminate;
  93.  
  94. //decorate
  95.  
  96.  
  97. actor DummyAimingProjectile
  98. {
  99. SpawnID 200
  100. Radius 1
  101. Height 1
  102. Speed 0
  103. Damage 0
  104. Renderstyle None
  105. Projectile
  106. +THRUACTORS
  107. +NOCLIP
  108. +NOINTERACTION
  109. -RANDOMIZE
  110. States
  111. {
  112. Spawn:
  113. TNT1 A 0
  114. TNT1 A 0
  115. TNT1 A 0
  116. TNT1 A 0
  117. TNT1 A 1
  118. TNT1 A 1
  119. TNT1 A 1
  120. TNT1 A 1
  121. Stop
  122. }
  123. }
  124.  
  125. Actor JumpFlagsOn : CustomInventory
  126. {
  127. +INVENTORY.AUTOACTIVATE
  128. Inventory.Amount 1
  129. Inventory.MaxAmount 1
  130. States
  131. {
  132. Pickup:
  133. TNT1 A 0 A_ChangeFlag("THRUSPECIES",1)
  134. TNT1 A 0 A_ChangeFlag("SLIDESONWALLS",1)
  135. Stop
  136. Use:
  137. TNT1 A 0 A_ChangeFlag("THRUSPECIES",1)
  138. TNT1 A 0 A_ChangeFlag("SLIDESONWALLS",1)
  139. Stop
  140. }
  141. }
  142.  
  143. Actor JumpFlagsOff : JumpFlagsOn
  144. {
  145. States
  146. {
  147. Pickup:
  148. TNT1 A 0 A_ChangeFlag("THRUSPECIES",0)
  149. TNT1 A 0 A_ChangeFlag("SLIDESONWALLS",0)
  150. Stop
  151. Use:
  152. TNT1 A 0 A_ChangeFlag("THRUSPECIES",0)
  153. TNT1 A 0 A_ChangeFlag("SLIDESONWALLS",0)
  154. Stop
  155. }
  156. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement