Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // this is a file called lazerbeam.txt, there is another files for the monster below.
- class DSH_TraceBeam : actor
- {
- color col;
- vector3 endPoint;
- vector3 actorOffset;
- int lifeTime;
- bool TrackHitPoint;
- Default
- {
- radius 0;
- height 0;
- +NOBLOCKMAP;
- +NOGRAVITY;
- +NOINTERACTION;
- +NOTELEPORT;
- +CANNOTPUSH;
- +NODAMAGETHRUST;
- RenderStyle "AddShaded";
- StencilColor "AAFFFF";
- }
- vector2 AnglesFromVec3 (vector3 vec)
- {
- Vector3 vecUnit = vec.unit();
- double angle = atan2(vecUnit.y, vecUnit.x);
- double pitch = asin(-vecUnit.z);
- return (angle,pitch);
- }
- void VectorBeam (vector3 startpos, vector3 endpos, class<actor> beamclass, double width)
- {
- actor act = actor.spawn(beamclass,startpos,NO_REPLACE);
- if(act)
- {
- vector3 dif = startpos - endpos;
- vector2 angs = AnglesFromVec3(dif);
- act.angle = angs.x;
- act.pitch = angs.y;
- act.scale.x = width;
- act.scale.y = (startpos-endpos).length();
- }
- }
- override void PostBeginPlay()
- {
- A_SetPitch(pitch+90);
- SetShade(col);
- Super.PostBeginPlay();
- }
- override void Tick(void)
- {
- Super.Tick();
- if(target)
- {
- if(!TrackHitPoint)
- {
- A_SetAngle(Target.Angle+DeltaAngle(target.angle,self.angle), SPF_INTERPOLATE);
- A_SetPitch(Target.Pitch+DeltaAngle(target.pitch,self.pitch-90.0)+90.0, SPF_INTERPOLATE);
- //A_SetAngle(Target.Angle, SPF_INTERPOLATE);
- //A_SetPitch(Target.Pitch-90.0, SPF_INTERPOLATE);
- /* this is some insane magic shit*/
- double oldAngle = Target.Angle; // Doing this because it's way more precise to do this than to decrement
- Target.A_SetAngle (Target.angle + 0.001, SPF_INTERPOLATE);
- Target.A_SetAngle (oldAngle, SPF_INTERPOLATE);
- /* insanity ends*/
- }
- //moves the actor
- SetOrigin(target.Vec3Offset(actorOffset.x, actorOffset.y,(target.height * 0.5 - Target.Pos.Z)+actorOffset.z, FALSE),TRUE);
- if(TrackHitPoint)
- {
- vector3 dif = self.pos - endpoint;
- vector2 angs = AnglesFromVec3(dif);
- A_SetAngle(angs.x, SPF_INTERPOLATE);
- A_SetPitch(angs.y+90, SPF_INTERPOLATE);
- scale.y = (self.pos-endpoint).length();
- }
- }
- }
- States
- {
- Spawn:
- MODL A 0 nodelay;
- MODL A 1 bright nodelay A_SetTics(lifeTime);
- stop;
- }
- }
- // this is in another file called SniperGuy.txt
- Class Sniper : actor
- {
- Default
- {
- Health 40;
- Radius 20;
- Height 56;
- Mass 100;
- Speed 8;
- PainChance 170;
- Monster;
- +FLOORCLIP;
- SeeSound "Marine1/See";
- AttackSound "shotguy/attack";
- PainSound "Marine1/Pain";
- DeathSound "Marine1/Death";
- ActiveSound "Marine1/Active";
- Obituary "$OB_SHOTGUY";
- DropItem "ShotgunguyDrop";
- Species "Zombie";
- Translation "112:127=#[255,255,0]:[200,200,0]";
- }
- vector2 AnglesFromVec3 (vector3 vec)
- {
- Vector3 vecUnit = vec.unit();
- double _angle = atan2(vecUnit.y, vecUnit.x);
- double _pitch = asin(-vecUnit.z);
- return (_angle,_pitch);
- }
- action actor VectorBeam (vector3 startpos, vector3 endpos, double rad)
- {
- actor act = actor.spawn("DSH_TraceBeam",startpos,NO_REPLACE);
- let a = DSH_TraceBeam(act);
- if(a)
- {
- vector3 dif = startpos - endpos;
- vector2 angs = AnglesFromVec3();
- a._angle = angs.x;
- a._pitch = angs.y;
- a.scale.y = (startpos-endpos).length();
- a.scale.x = rad;
- }
- return act;
- }
- States
- {
- Spawn:
- AL17 AB 10 A_Look;
- Loop;
- See:
- AL17 AABBCCDD 3 A_Chase;
- Loop;
- Missile:
- AL17 E 5 A_FaceTarget;
- AL17 E 3 A_FaceTarget(20,20);
- AL17 F 0 BRIGHT A_SpawnProjectile("VectorBeam",32,0,frandom(-0.1, 0.1), CMF_AIMDIRECTION | CMF_OFFSETPITCH, pitch + frandom(-0.1,0.1));
- AL17 E 3 A_FaceTarget(20,20);
- AL17 F 0 BRIGHT A_SpawnProjectile("VectorBeam",32,0,frandom(-0.1, 0.1), CMF_AIMDIRECTION | CMF_OFFSETPITCH, pitch + frandom(-0.1,0.1));
- AL17 E 3 A_FaceTarget(20,20);
- AL17 F 0 BRIGHT A_SpawnProjectile("VectorBeam",32,0,frandom(-0.1, 0.1), CMF_AIMDIRECTION | CMF_OFFSETPITCH, pitch + frandom(-0.1,0.1));
- AL17 E 3 A_FaceTarget(20,20);
- AL17 F 0 BRIGHT A_SpawnProjectile("VectorBeam",32,0,frandom(-0.1, 0.1), CMF_AIMDIRECTION | CMF_OFFSETPITCH, pitch + frandom(-0.1,0.1));
- AL17 E 3 A_FaceTarget(20,20);
- AL17 F 0 BRIGHT A_SpawnProjectile("VectorBeam",32,0,frandom(-0.1, 0.1), CMF_AIMDIRECTION | CMF_OFFSETPITCH, pitch + frandom(-0.1,0.1));
- AL17 E 3 A_FaceTarget(20,20);
- AL17 F 0 BRIGHT A_SpawnProjectile("VectorBeam",32,0,frandom(-0.1, 0.1), CMF_AIMDIRECTION | CMF_OFFSETPITCH, pitch + frandom(-0.1,0.1));
- AL17 E 3 A_FaceTarget(20,20);
- AL17 F 0 BRIGHT A_SpawnProjectile("VectorBeam",32,0,frandom(-0.1, 0.1), CMF_AIMDIRECTION | CMF_OFFSETPITCH, pitch + frandom(-0.1,0.1));
- AL17 E 3 A_FaceTarget(10,10);
- AL17 F 0 BRIGHT A_SpawnProjectile("VectorBeam",32,0,frandom(-0.1, 0.1), CMF_AIMDIRECTION | CMF_OFFSETPITCH, pitch + frandom(-0.1,0.1));
- AL17 E 3 A_FaceTarget(10,10);
- AL17 F 0 BRIGHT A_SpawnProjectile("VectorBeam",32,0,frandom(-0.1, 0.1), CMF_AIMDIRECTION | CMF_OFFSETPITCH, pitch + frandom(-0.1,0.1));
- AL17 E 3 A_FaceTarget(10,10);
- AL17 F 0 BRIGHT A_SpawnProjectile("VectorBeam",32,0,frandom(-0.1, 0.1), CMF_AIMDIRECTION | CMF_OFFSETPITCH, pitch + frandom(-0.1,0.1));
- AL17 E 3 A_FaceTarget(10,10);
- AL17 F 0 BRIGHT A_SpawnProjectile("VectorBeam",32,0,frandom(-0.1, 0.1), CMF_AIMDIRECTION | CMF_OFFSETPITCH, pitch + frandom(-0.1,0.1));
- AL17 E 3 A_FaceTarget(5,5);
- AL17 F 0 BRIGHT A_SpawnProjectile("VectorBeam",32,0,frandom(-0.1, 0.1), CMF_AIMDIRECTION | CMF_OFFSETPITCH, pitch + frandom(-0.1,0.1));
- AL17 E 3 A_FaceTarget(5,5);
- AL17 F 0 BRIGHT A_SpawnProjectile("VectorBeam",32,0,frandom(-0.1, 0.1), CMF_AIMDIRECTION | CMF_OFFSETPITCH, pitch + frandom(-0.1,0.1));
- AL17 E 3 A_FaceTarget(5,5);
- AL17 F 0 BRIGHT A_SpawnProjectile("VectorBeam",32,0,frandom(-0.1, 0.1), CMF_AIMDIRECTION | CMF_OFFSETPITCH, pitch + frandom(-0.1,0.1));
- AL17 E 3 A_FaceTarget(5,5);
- AL17 F 0 BRIGHT A_SpawnProjectile("VectorBeam",32,0,frandom(-0.1, 0.1), CMF_AIMDIRECTION | CMF_OFFSETPITCH, pitch + frandom(-0.1,0.1));
- AL17 E 3 A_FaceTarget(5,5);
- AL17 F 0 BRIGHT A_SpawnProjectile("VectorBeam",32,0,frandom(-0.1, 0.1), CMF_AIMDIRECTION | CMF_OFFSETPITCH, pitch + frandom(-0.1,0.1));
- AL17 E 3 A_FaceTarget(5,5);
- AL17 F 0 BRIGHT A_SpawnProjectile("VectorBeam",32,0,frandom(-0.1, 0.1), CMF_AIMDIRECTION | CMF_OFFSETPITCH, pitch + frandom(-0.1,0.1));
- AL17 E 3 A_FaceTarget(5,5);
- AL17 F 0 BRIGHT A_SpawnProjectile("VectorBeam",32,0,frandom(-0.1, 0.1), CMF_AIMDIRECTION | CMF_OFFSETPITCH, pitch + frandom(-0.1,0.1));
- AL17 E 3 A_FaceTarget(5,5);
- TNT1 A 0 A_PlaySound("Weapons/DMRFire");
- AL17 F 2 BRIGHT A_SpawnProjectile("SniperShot",32,0,frandom(-1, 1), CMF_AIMDIRECTION | CMF_OFFSETPITCH, pitch + frandom(-1,1));
- AL17 E 35;
- Goto See;
- Pain:
- AL17 G 3;
- AL17 G 3 A_Pain;
- Goto See;
- Death:
- AL17 H 5;
- AL17 I 5 A_Scream;
- AL17 J 5 A_NoBlocking;
- AL17 K 5;
- AL17 L -1;
- Stop;
- XDeath:
- TNT1 A 0;
- TNT1 A 1 A_SpawnItemEx ("MarineXDeath", 0, 0, 0, 0 ,0 ,0 , 0, SXF_TRANSFERTRANSLATION);
- TNT1 A 0 A_NoBlocking;
- Stop;
- Raise:
- AL17 L 5;
- AL17 KJIH 5;
- Goto See;
- }
- }
- Class SniperShot : actor
- {
- default
- {
- Radius 2;
- Height 2;
- damage (20);
- Speed 40;
- RenderStyle "Add";
- PROJECTILE;
- +BLOODSPLATTER;
- Obituary "%o Was rushed down by a Shotgunner";
- Scale 0.3;
- Decal "BulletChip";
- DeathSound "BulletPing";
- +THRUSPECIES;
- Species "Zombie";
- }
- States
- {
- Spawn:
- TRAC A 1 BRIGHT;
- Loop;
- Death:
- Crash:
- TNT1 A 0 A_PlaySound("ricochet",CHAN_AUTO);
- TNT1 AAA 0 A_CustomMissile("RicochetSparks",0,0,random(0,360),2,random(10,60));
- Stop;
- }
- }
- /*
- Class SniperLaser
- {
- Radius 2
- Height 2
- damage (0)
- Speed 100
- PROJECTILE
- renderstyle add
- Obituary "%o Was rushed down by a Shotgunner"
- Scale 1
- States
- {
- Spawn:
- LASR A 3 A_SpawnItemEx ("SniperLaserTrailSpawner")
- Loop
- Death:
- Crash:
- Stop
- }
- }
- ACTOR SniperLaserTrailSpawner
- {
- +NoGravity
- +NoClip
- States
- {
- Spawn:
- TNT1 A 0
- TNT1 A 3 A_SpawnItemEx ("SniperLaserTrail")
- stop
- }
- }
- ACTOR SniperLaserTrail
- {
- Radius 2
- Height 2
- Scale 1
- renderstyle add
- +NOINTERACTION
- States
- {
- Spawn:
- LASR A 1
- stop
- }
- }
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement