Showing with 330 additions and 969 deletions.
  1. +0 −3 C_Source/src/common/player.c
  2. +90 −111 Editing/Weapons/. Being coded/Soul Lance/Animation/ZSCRIPT.ZS
  3. BIN Editing/Weapons/. Being coded/Soul Lance/SoulLanceBeamTex.psd
  4. +12 −1 PK3 Source/MODELDEF.txt
  5. +3 −0 PK3 Source/Mapinfo/DamageTypes.txt
  6. +0 −94 PK3 Source/S7ZScript/Base Actors.ZS
  7. +1 −1 PK3 Source/S7ZScript/Base Weapon.ZS
  8. +61 −0 PK3 Source/S7ZScript/Extensions.ZS
  9. +0 −3 PK3 Source/S7ZScript/GUI/BaseMenu.ZS
  10. +0 −7 PK3 Source/S7ZScript/GUI/ZGuiControls/BaseControl.ZS
  11. +0 −121 PK3 Source/S7ZScript/GUI/ZGuiControls/Button.ZS
  12. +0 −28 PK3 Source/S7ZScript/GUI/ZGuiControls/Image.ZS
  13. +0 −20 PK3 Source/S7ZScript/GUI/ZGuiControls/Label.ZS
  14. +45 −0 PK3 Source/S7ZScript/MathExtensions.ZS
  15. +98 −0 PK3 Source/S7ZScript/Monsters/Base Monsters.ZS
  16. +0 −1 PK3 Source/S7ZScript/Player.ZS
  17. +1 −1 PK3 Source/S7ZScript/Weapons/Primary/AK47/AK47.ZS
  18. +2 −2 PK3 Source/S7ZScript/Weapons/Primary/AMG/AMG.ZS
  19. +1 −1 PK3 Source/S7ZScript/Weapons/Primary/ConquerorRifle/ConquerorRifle.ZS
  20. +1 −1 PK3 Source/S7ZScript/Weapons/Primary/Fauchard/Fauchard.ZS
  21. +2 −2 PK3 Source/S7ZScript/Weapons/Primary/Hitter/Hitter.ZS
  22. +3 −3 PK3 Source/S7ZScript/Weapons/Primary/LaserPewPew/LaserPewPew.ZS
  23. +1 −1 PK3 Source/S7ZScript/Weapons/Primary/ManxCarbine/ManxCarbine.ZS
  24. +1 −1 PK3 Source/S7ZScript/Weapons/Primary/PlasmaGun/PlasmaGun.ZS
  25. +1 −1 PK3 Source/S7ZScript/Weapons/Primary/SSG/SSG.ZS
  26. +1 −1 PK3 Source/S7ZScript/Weapons/Primary/Shotgun/Shotgun.ZS
  27. +1 −1 PK3 Source/S7ZScript/Weapons/Primary/Thumper/Thumper.ZS
  28. +1 −1 PK3 Source/S7ZScript/Weapons/Secondary/Raptor/Raptor.ZS
  29. +1 −1 PK3 Source/S7ZScript/Weapons/Secondary/Revolver/Revolver.ZS
  30. +1 −1 PK3 Source/S7ZScript/Weapons/Secondary/TEC-9/TEC-9.ZS
  31. +0 −21 PK3 Source/S7ZScript/zgui/LICENSE
  32. +0 −287 PK3 Source/S7ZScript/zgui/base.ZS
  33. +0 −61 PK3 Source/S7ZScript/zgui/data.ZS
  34. +0 −181 PK3 Source/S7ZScript/zgui/drawer.ZS
  35. +0 −3 PK3 Source/S7ZScript/zgui/zgui.ZS
  36. +2 −8 PK3 Source/ZScript.ZS
  37. BIN PK3 Source/models/Beam/1mubeam.md3
  38. BIN PK3 Source/models/Beam/SoulLance.png
@@ -61,9 +61,6 @@ void UpdatePlayerData (PlayerData_t *player) {
player->scriptData.disableHUD = CheckInventory (DISABLEHUDTOKEN);
player->parkourDef.mjumpMax = CheckInventory (MJUMP_MAXTOKEN);
player->scriptData.beamGrab = CheckInventory (SLANCE_BEAMGRABTOKEN);

// Non struct data
SetInventory (s"S7_AutoReloading", GetUserCVar (PLN, s"S7_AutoReloading"));
}

void UpdatePlayerAlpha (PlayerData_t *player) {
@@ -1,3 +1,5 @@
version "3.3"

class S7_SLance_BeamHeld_Fire : S7_Boolean { }
class S7_SoulLance : S7_BaseWeapon {
default {
@@ -8,15 +10,48 @@ class S7_SoulLance : S7_BaseWeapon {
-weapon.noAlert
}

S7_SoulLance_Beam beamActor;
Actor beamHit;

action void S7_A_MaintainBeam () {
let pPawn = PlayerPawn (self);
if (!invoker.beamActor || !pPawn)
return;

double cospitch = cos (pitch), maxDist = radius * radius;
double spawnOff = 20.0;
FTranslatedLineTarget lTarget;
let puff = LineAttack (angle, 8192.0, pitch, 0, "None", "S7_SoulLancePuff", LAF_NoRandomPuffZ | LAF_NoImpactDecal, lTarget);
invoker.beamHit = lTarget.linetarget;
let tmpPoint = (spawnOff * cospitch * cos (angle), spawnOff * cospitch * sin (angle), spawnOff * -sin (pitch));

do {
tmpPoint *= 0.5;
} while ((tmpPoint.XY dot tmpPoint.XY) >= maxDist);

let posOff = (0.0, 2.25, ((height / 2.0) + pPawn.attackZOffset) - 2.25);
invoker.beamActor.Warp (self, posOff.X, posOff.Y, posOff.Z, flags: WARPF_NoCheckPosition | WARPF_CopyInterpolation);
invoker.beamActor.SetOrigin (invoker.beamActor.Vec3Offset (tmpPoint.X, tmpPoint.Y, tmpPoint.Z), false);

invoker.beamActor.scale.Y = -invoker.beamActor.Distance3D (puff);
invoker.beamActor.A_Face (puff, 0, 0);
invoker.beamActor.pitch += 90.0;
}

action void S7_A_BeamDamage () {
if (!invoker.beamHit)
return;

invoker.beamHit.DamageMobj (self, self, random (1, 2) * 5, "S7_SoulLance_Beam", DMG_No_Armor | DMG_Thrustless | DMG_PlayerAttack);
}

states {
Ready:
SLNC ABCD 1;
SLNC E 5;
SLNC FGHIJKLM 1;
Ready2:
SLNC M 1 {
if (CheckInventory ("S7_SoulLance_BeamGrabbed", 1))
return ResolveState ("Fire.Grabbed");
if (CheckInventory ("S7_DoMelee", 1))
return ResolveState ("QuickMelee");
TakeInventory ("S7_Reloading", 0x7FFFFFFF);
@@ -30,42 +65,38 @@ class S7_SoulLance : S7_BaseWeapon {
Fire:
SLNC NOPQRS 1;
SLNC TU 2;
TNT1 A 0 A_JumpIfInventory ("S7_SoulLance_BeamGrabbed", 1, "Hold.Grabbed");
TNT1 A 0 {
invoker.beamActor = S7_SoulLance_Beam (Spawn ("S7_SoulLance_Beam"));
if (invoker.beamActor) {
invoker.beamActor.target = self;
invoker.beamActor.goAway = false; // Just to make sure
}
}
Hold:
SLNC V 2 {
A_FireProjectile ("S7_SoulLance_Mutilator", 0, 0, 0, 0);
A_FireProjectile ("S7_SoulLance_Beam", 0.0, 0, 5, 0, 0, 0.0);
SLNC V 1 { // Effects and damage here
A_DamageSelf (2, "SoulLanceSelfDamage");
S7_A_MaintainBeam ();
S7_A_BeamDamage ();
}
SLNC W 2;
SLNC X 2 A_FireProjectile ("S7_SoulLance_Beam", 0.0, 0, 5, 0, 0, 0.0);
SLNC Y 2;
SLNC VWW 1 S7_A_MaintainBeam ();
SLNC X 1 { // Effects and damage here
S7_A_MaintainBeam ();
S7_A_BeamDamage ();
}
SLNC XYY 1 S7_A_MaintainBeam ();
SLNC U 2 {
if (CheckInventory ("S7_SoulLance_BeamGrabbed", 1))
return ResolveState ("Hold.Grabbed");
S7_A_MaintainBeam ();

A_Refire ();

return ResolveState (null);
}
SLNC T 2;
SLNC SRQPONM 1;
goto Ready2;

Fire.Grabbed:
SLNC N 1 A_FireProjectile ("S7_SoulLance_Beam_GrabbedSpawner", 0.0, 0, 0, 0, 0, 0.0);
SLNC OPQRS 1;
SLNC TU 2;
Hold.Grabbed:
SLNC V 2 {
A_FireProjectile ("S7_SoulLance_Mutilator", 0, 0, 0, 0);
GiveInventory ("S7_SLance_BeamHeld_Fire", 1);
SLNC T 1 {
if (invoker.beamActor)
invoker.beamActor.goAway = true;
invoker.beamActor = null;
}
SLNC W 2;
SLNC X 2 GiveInventory ("S7_SLance_BeamHeld_Fire", 1);
SLNC Y 2;
SLNC U 2 A_JumpIfInventory ("S7_SoulLance_BeamGrabbed", 1, "Hold.Grabbed");
SLNC T 2;
SLNC SRQPONM 1;
SLNC TSRQPONM 1;
goto Ready2;

Select:
@@ -91,110 +122,50 @@ class S7_SoulLance : S7_BaseWeapon {
}
}

class S7_SoulLance_Mutilator : actor {
default {
damageType "SoulLanceSelfDamage";
obituary "$SLANCESELFKILL";

+noInteraction +noGravity +invisible +cantSeek
+noBlockmap +noTrigger +neverRespawn +dontSplash
+noExtremeDeath +foilInvul +noDamageThrust
}

states {
Death:
Spawn:
TNT1 A 1 {
A_RearrangePointers (AAPTR_Default, AAPTR_TARGET, AAPTR_TARGET);
A_DamageMaster (2, "SoulLanceSelfDamage");
}
stop;
}
}

class S7_SoulLance_Beam_GrabbedSpawner : actor {
class S7_SoulLancePuff : S7_TraceTestPuff {
default {
radius 2;
height 2;
speed 0;
renderStyle "none";

projectile;
+invulnerable +noDamage +noBlockmap +noTeleport
+thruActors +noClip +noGravity +ghost
+dontSplash +invisible +noInteraction
+alwaysPuff +puffOnActors +skyExplode
}

int user_off [3];

states {
Spawn:
TNT1 A 1 noDelay {
A_Warp (AAPTR_Target, user_off [0], user_off [1], user_off [2], 0, WARPF_NoCheckPosition | WARPF_Interpolate | WARPF_UseCallerAngle);

if (!CheckLOF (CLOFF_JumpEnemy | CLOFF_JumpFriend | CLOFF_JumpObject | CLOFF_JumpNonHostile | CLOFF_SkipTarget, 0.0, 0.0, angle, -pitch))
return ResolveState ("NoLOF");

if (target && target.CheckInventory ("S7_SLance_BeamHeld_Fire", 1))
return ResolveState ("ShootStuff");

return ResolveState (null);
}
loop;

ShootStuff:
TNT1 A 0 {
A_SpawnProjectile ("S7_SoulLance_Beam", 0.0, 5, angle, CMF_AimDirection | CMF_TrackOwner | CMF_AbsoluteAngle | CMF_AbsolutePitch, pitch);
A_TakeFromTarget ("S7_SLance_BeamHeld_Fire", 0x7FFFFFFF);
}
goto Spawn;

NoLOF:
TNT1 A 1 A_TakeFromTarget ("S7_SoulLance_BeamGrabbed", 0x7FFFFFFF);
Death:
TNT1 A 1;
stop;
}
}

class S7_SoulLance_Beam : fastProjectile {
class S7_SoulLance_Beam : Actor {
default {
radius 8;
height 8;
speed 25;
health 200;
renderStyle "add";
scale 0.060;
damageFunction (random (1, 2) * 5);
damageType "S7_SoulLance_Beam";
missileType "S7_SoulLance_Beam_Trail";
missileHeight 8;
decal "Scorch";
//decal "Scorch";
alpha 1.0;
renderRadius 8200;

projectile;
+noDamageThrust +forceXYBillboard +ripper +forceRadiusDMG
+noGravity +noInteraction
}

bool goAway;

states {
Spawn:
TNT1 A 0 noDelay {
A_ScaleVelocity (1.0 / (25 * 1.0));
A_ScaleVelocity (health);
SLCF A 1 bright {
if (!target || target.health <= 0)
return ResolveState ("Null");
if (goAway)
return ResolveState ("Death");

return ResolveState (null);
}
Idle:
SLCF A 1 bright;
loop;
Death:
//TNT1 A 0 A_Explode (random (1, 3) * 128, 32, 0);
TNT1 A 0 {
A_SpawnItemEx ("S7_SoulLance_Beam_Explosion", 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, SXF_Clientside);
for (int i = 0; i < 4; i++) {
A_SpawnItemEx ("S7_SoulLance_Sparks", 0.0, 0.0, 0.0, frandom [sfx] (-2.5, 2.5), frandom [sfx] (-2.5, 2.5), frandom [sfx] (-0.5, 3.5), 0, SXF_Clientside);
A_SpawnItemEx ("S7_SoulLance_Sparks2", 0.0, 0.0, 0.0, frandom [sfx] (-2.5, 2.5), frandom [sfx] (-2.5, 2.5), frandom [sfx] (-0.5, 3.5), 0, SXF_Clientside);
A_SpawnItemEx ("S7_SoulLance_Sparks3", 0.0, 0.0, 0.0, frandom [sfx] (-2.5, 2.5), frandom [sfx] (-2.5, 2.5), frandom [sfx] (-0.5, 3.5), 0, SXF_Clientside);
A_SpawnItemEx ("S7_SoulLance_Sparks4", 0.0, 0.0, 0.0, frandom [sfx] (-2.5, 2.5), frandom [sfx] (-2.5, 2.5), frandom [sfx] (-0.5, 3.5), 0, SXF_Clientside);
}
SLCF A 1 {
A_FadeOut (0.06);
scale.X *= 0.65;
}
stop;
loop;
}
}

@@ -208,7 +179,15 @@ class S7_SoulLance_Beam_Explosion : S7_SoulLance_Beam {

states {
Spawn:
PLSE ABCDE 2 bright;
PLSE A 2 bright {
for (int i = 0; i < 4; i++) {
A_SpawnItemEx ("S7_SoulLance_Sparks", 0.0, 0.0, 0.0, frandom [sfx] (-2.5, 2.5), frandom [sfx] (-2.5, 2.5), frandom [sfx] (-0.5, 3.5), 0, SXF_Clientside);
A_SpawnItemEx ("S7_SoulLance_Sparks2", 0.0, 0.0, 0.0, frandom [sfx] (-2.5, 2.5), frandom [sfx] (-2.5, 2.5), frandom [sfx] (-0.5, 3.5), 0, SXF_Clientside);
A_SpawnItemEx ("S7_SoulLance_Sparks3", 0.0, 0.0, 0.0, frandom [sfx] (-2.5, 2.5), frandom [sfx] (-2.5, 2.5), frandom [sfx] (-0.5, 3.5), 0, SXF_Clientside);
A_SpawnItemEx ("S7_SoulLance_Sparks4", 0.0, 0.0, 0.0, frandom [sfx] (-2.5, 2.5), frandom [sfx] (-2.5, 2.5), frandom [sfx] (-0.5, 3.5), 0, SXF_Clientside);
}
}
PLSE BCDE 2 bright;
stop;
}
}
Binary file not shown.
@@ -19,4 +19,15 @@ model S7_MultiJump_Marker {
scale 32.0 32.0 32.0

frameIndex MJMP A 0 0
}
}

/*model S7_SoulLance_Beam {
path "models/Beam"
model 0 "1mubeam.md3" // Model by kodi
skin 0 "SoulLance.png" //
scale 10 10 1.2 //the 10's here are radius. Set to 1 if you want to scale to exact dimensions in zscript

useActorPitch

frameIndex SLCF A 0 0
}*/
@@ -9,5 +9,8 @@ damageType NerveGas {
}

damageType SoulLanceSelfDamage {
obituary = "$SLANCESELFKILL"

replaceFactor
noArmor
}