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;
- Also add another script that checks if enemy is higher and in a different sector than the actor before jumping to this state, also maybe have them jump back from the ledge before doing this to make their attempt to jump up more likely to succeed.
- //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