Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //acs
- //switched to condense but extra functionality if uses all three args, can clamp zvelocity
- case WEEB_DEC_JUMPATTACK:
- int WeebActorOldTid = ActivatorTID();
- int WeebTargetTid = unusedTID(6000,8000);
- int WeebActorTid = unusedTID(8001,10000);
- int WeebDummyProjectileTid = unusedTID(10001,12001);
- int WeebDummyProjectileSpeed = (a1 * 8);
- if (a1 == 0) { a1 = 30; }
- if (a2 == 0) { a2 = 0x7FFFFFFF; }
- 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
- if (a3 == 0) { a3 = 8; }
- int ActorX = GetActorX(0) / 65536;
- int Actory = GetActorY(0) / 65536;
- int ActorZ = GetActorZ(0) / 65536;
- GiveInventory("JumpFlagsOn", 1);
- ACS_Execute(267,0,21);
- Thing_ChangeTID(0,WeebActorTid);
- SetActivatorToTarget(0);
- int WeebTargetOldTid = ActivatorTID();
- if (ClassifyActor(0) == ACTOR_PLAYER) { WeebTargetTid = ActivatorTID(); }
- else if (ActivatorTID() == !0) { if (ThingCount(T_NONE,ActivatorTID()) == 1) { WeebTargetTid = ActivatorTID(); }}
- else { Thing_ChangeTID(0,WeebTargetTid); }
- Thing_ProjectileIntercept(WeebActorTid,200,WeebDummyProjectileSpeed,0,WeebDummyProjectileTid);
- int WeebDummyProjectileAngle = GetActorAngle(WeebDummyProjectileTid);
- SetActorAngle(WeebActorTid,WeebDummyProjectileAngle);
- int TargetX = GetActorX(0) / 65536;
- int Targety = GetActorY(0) / 65536;
- int TargetZ = GetActorZ(0) / 65536;
- int DiffX = (TargetX - ActorX);
- int DiffY = (TargetY - ActorY);
- int DiffZ = (TargetZ - ActorZ);
- int DiffSquaredX = abs(DiffX * DiffX);
- int DiffSquaredY = abs(DiffY * DiffY);
- int FlatDistance = sqrt_i(DiffSquaredX + DiffSquaredY);
- int TimeToHit = abs(FlatDistance / a1);
- if (TimeToHit <= 0) { TimeToHit = 1; }
- int ExtraPep = ( FlatDistance ) / 150;
- if (ExtraPep > a3) { ExtraPep = a3; }
- int GravityToOvercome = (GetActorProperty(WeebActorTid,APROP_Gravity) * TimeToHit) / 65536;
- int TotalZVelNeeded = (DiffZ / TimeToHit) + GravityToOvercome + ExtraPep;
- if (TotalZVelNeeded > a2) { TotalZVelNeeded = a2; }
- if (TotalZVelNeeded < 0) { TotalZVelNeeded = 0; }
- int TotalZVelNeededFixed = TotalZVelNeeded * 65536;
- /*
- Log(s: "Target X:", d:TargetX);
- Log(s: "Target Y:", d:TargetY);
- Log(s: "Target Z:", d:TargetZ);
- Log(s: "Actor X:", d:ActorX);
- Log(s: "Actor Y:", d:ActorY);
- Log(s: "Actor Z:", d:ActorZ);
- Log(s: "Diff X:", d:DiffX);
- Log(s: "Diff Y:", d:DiffY);
- Log(s: "Diff Z:", d:DiffZ);
- Log(s: "DiffSquared X:", d:DiffSquaredX);
- Log(s: "DiffSquared Y:", d:DiffSquaredY);
- Log(s: "Flat Distance:", d:FlatDistance);
- Log(s: "ExtraPep:", d:ExtraPep);
- Log(s: "GravityToOvercome:", d:GravityToOvercome);
- Log(s: "TotalZVelNeeded:", d:TotalZVelNeeded);
- */
- int WeebDummyProjectileAngleByte = (WeebDummyProjectileAngle * 256/65536);
- SetActorVelocity(WeebActorTid,0,0,TotalZVelNeededFixed,0,0);
- ThrustThing(WeebDummyProjectileAngleByte,a1,1,WeebActorTid);
- if (ClassifyActor(0) == !ACTOR_PLAYER) { Thing_ChangeTID(0,WeebTargetOldTid); }
- Thing_ChangeTID(WeebActorTid,WeebActorOldTid);
- break;
- case 22:
- Delay(1);
- TakeInventory("JumpFlagsOn", 1);
- GiveInventory("JumpFlagsOff", 1);
- Terminate;
- //decorate
- actor DummyAimingProjectile
- {
- SpawnID 200
- Radius 1
- Height 1
- Speed 0
- Damage 0
- Renderstyle None
- Projectile
- +THRUACTORS
- +NOCLIP
- +NOINTERACTION
- -RANDOMIZE
- States
- {
- Spawn:
- TNT1 A 0
- TNT1 A 0
- TNT1 A 0
- TNT1 A 0
- TNT1 A 1
- TNT1 A 1
- TNT1 A 1
- TNT1 A 1
- Stop
- }
- }
- Actor JumpFlagsOn : CustomInventory
- {
- +INVENTORY.AUTOACTIVATE
- Inventory.Amount 1
- Inventory.MaxAmount 1
- States
- {
- Pickup:
- TNT1 A 0 A_ChangeFlag("THRUSPECIES",1)
- TNT1 A 0 A_ChangeFlag("SLIDESONWALLS",1)
- Stop
- Use:
- TNT1 A 0 A_ChangeFlag("THRUSPECIES",1)
- TNT1 A 0 A_ChangeFlag("SLIDESONWALLS",1)
- Stop
- }
- }
- Actor JumpFlagsOff : JumpFlagsOn
- {
- States
- {
- Pickup:
- TNT1 A 0 A_ChangeFlag("THRUSPECIES",0)
- TNT1 A 0 A_ChangeFlag("SLIDESONWALLS",0)
- Stop
- Use:
- TNT1 A 0 A_ChangeFlag("THRUSPECIES",0)
- TNT1 A 0 A_ChangeFlag("SLIDESONWALLS",0)
- Stop
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement