Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //////
- ///
- // DECORATE
- ///
- /////
- actor OneshotBullet
- {
- +SERVERSIDEONLY
- +NOINTERACTION
- +NOTIMEFREEZE
- Radius 1
- Height 1
- Projectile
- Speed 20
- States
- {
- Spawn:
- TNT1 A 0
- TNT1 A 0 A_SpawnItemEx("ActualOneshotBullet", 0,0,0, ACS_ExecuteWithResult(430, 2, 0) / 2.0, 0, ACS_ExecuteWithResult(430, 2, 1) / 2.0, 0)
- stop
- }
- }
- actor ActualOneshotBullet: FastProjectile
- {
- Radius 1
- Height 1
- Speed 32767
- Damage (random(1,3)*5)
- +SERVERSIDEONLY
- +NOBLOCKMONST
- +PUFFGETSOWNER
- +NOTIMEFREEZE
- +MTHRUSPECIES
- Decal BulletChip
- Scale 0.5
- States
- {
- Spawn:
- TNT1 A 1
- loop
- XDeath:
- TNT1 A 8 A_SpawnItemEx("OneshotFakeBlood")
- stop
- Crash:
- Death:
- TNT1 A 8 A_SpawnItemEx("BulletPuff", 0,0,0, 0,0,1)
- stop
- }
- }
- actor OneshotFakeBlood: Blood
- {
- States
- {
- Spawn:
- BLUD A 0
- TNT1 A 0 A_Jump(256, 1, 2, 3)
- goto Super::Spawn
- TNT1 A 0
- goto Super::Spawn
- TNT1 A 0
- goto Super::Spawn+1
- TNT1 A 0
- goto Super::Spawn+2
- }
- }
- /////
- ///
- // ACS
- ///
- /////
- script ONESHOT_DECORATE (int which, int a1, int a2)
- {
- int ret = 0;
- int x, y, z, xymag, xyzmag;
- switch (which)
- {
- case 2:
- x = GetActorVelX(0);
- y = GetActorVelY(0);
- z = GetActorVelZ(0);
- xymag = magnitudeTwo_f(x, y);
- xyzmag = magnitudeThree_f(x, y, z);
- if (xyzmag == 0) { ret = 0; break; }
- if (a1 == 1) // get sin(pitch)
- {
- ret = FixedDiv(z, xyzmag);
- }
- else // get cos(pitch)
- {
- ret = FixedDiv(xymag, xyzmag);
- }
- ret = min(ret, 65535);
- break;
- }
- SetResultValue(ret);
- }
Advertisement
Add Comment
Please, Sign In to add comment