Working on indicators.
BIN
graphics/jmpr_reticle1.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
graphics/jmpr_reticle2.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
graphics/jmpr_reticle3.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
31
source_data/Makefile
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
|
||||||
|
all : \
|
||||||
|
../sprites/jmpka0.png \
|
||||||
|
../sprites/jmpra0.png \
|
||||||
|
../sprites/jmppa0.png \
|
||||||
|
../sprites/jmppb0.png \
|
||||||
|
../sprites/jmppc0.png \
|
||||||
|
../graphics/jmpr_reticle.png
|
||||||
|
|
||||||
|
../sprites/jmpka0.png : kit.aseprite
|
||||||
|
aseprite -b $^ --save-as $@
|
||||||
|
|
||||||
|
../sprites/jmpra0.png : jmpra0.aseprite
|
||||||
|
aseprite -b $^ --save-as $@
|
||||||
|
|
||||||
|
# Base sprite with no numerical indicator, but anim frames (0,1,2) for
|
||||||
|
# status light.
|
||||||
|
../sprites/jmppa0.png ../sprites/jmppb0.png ../sprites/jmppc0.png : povsprite.aseprite
|
||||||
|
aseprite -b $^ \
|
||||||
|
--ignore-layer "numberindicatorleft" \
|
||||||
|
--ignore-layer "numberindicatorright" \
|
||||||
|
--frame-range 0,2 --save-as $@
|
||||||
|
|
||||||
|
# Correct Aseprite's automatic naming to Doom's. (Number at the
|
||||||
|
# end is for rotations, letters are for frame numbers.)
|
||||||
|
mv ../sprites/jmppa1.png ../sprites/jmppb0.png
|
||||||
|
mv ../sprites/jmppa2.png ../sprites/jmppc0.png
|
||||||
|
|
||||||
|
../graphics/jmpr_reticle.png : jmpr_reticle.aseprite
|
||||||
|
aseprite -b $^ \
|
||||||
|
--frame-range 0,2 --save-as $@
|
BIN
source_data/jmpr_reticle.aseprite
Normal file
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
BIN
sprites/jmppa0.png
Normal file
After Width: | Height: | Size: 4.4 KiB |
BIN
sprites/jmppb0.png
Normal file
After Width: | Height: | Size: 4.4 KiB |
BIN
sprites/jmppc0.png
Normal file
After Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
20
textures.txt
@ -2,14 +2,17 @@ sprite JMPRA0, 49, 43 {
|
|||||||
offset 24, 21
|
offset 24, 21
|
||||||
patch JMPRA0,0,0 { }
|
patch JMPRA0,0,0 { }
|
||||||
}
|
}
|
||||||
|
|
||||||
sprite JMPRB0, 49, 43 {
|
sprite JMPRB0, 49, 43 {
|
||||||
offset 24, 21
|
offset 24, 21
|
||||||
patch JMPRA0,0,0 { translation "112:120=160:167" }
|
patch JMPRA0,0,0 { translation "112:120=160:167" }
|
||||||
}
|
}
|
||||||
|
|
||||||
sprite JMPRC0, 49, 43 {
|
sprite JMPRC0, 49, 43 {
|
||||||
offset 24, 21
|
offset 24, 21
|
||||||
patch JMPRA0,0,0 { translation "112:120=32:47" }
|
patch JMPRA0,0,0 { translation "112:120=32:47" }
|
||||||
}
|
}
|
||||||
|
|
||||||
sprite JMPRD0, 49, 43 {
|
sprite JMPRD0, 49, 43 {
|
||||||
offset 24, 21
|
offset 24, 21
|
||||||
patch JMPRA0,0,0 { translation "112:120=96:111" }
|
patch JMPRA0,0,0 { translation "112:120=96:111" }
|
||||||
@ -20,3 +23,20 @@ sprite JMPKA0, 48, 32 {
|
|||||||
patch JMPKA0,0,0 { }
|
patch JMPKA0,0,0 { }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sprite JMPPA0, 320, 200 {
|
||||||
|
offset 0, 32
|
||||||
|
patch JMPPA0,0,0 { }
|
||||||
|
}
|
||||||
|
|
||||||
|
sprite JMPPB0, 320, 200 {
|
||||||
|
offset 0, 32
|
||||||
|
patch JMPPB0,0,0 { }
|
||||||
|
}
|
||||||
|
|
||||||
|
sprite JMPPC0, 320, 200 {
|
||||||
|
offset 0, 32
|
||||||
|
patch JMPPC0,0,0 { }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
92
zscript.zs
@ -243,6 +243,8 @@ class JumperCablesDeployed : HDUPK
|
|||||||
|
|
||||||
class JumperCablesUsable : HDWeapon
|
class JumperCablesUsable : HDWeapon
|
||||||
{
|
{
|
||||||
|
int lastIndicatorStatus;
|
||||||
|
|
||||||
default
|
default
|
||||||
{
|
{
|
||||||
+weapon.wimpy_weapon;
|
+weapon.wimpy_weapon;
|
||||||
@ -277,6 +279,29 @@ class JumperCablesUsable : HDWeapon
|
|||||||
return GetSpareWeaponRegular(newowner,reverse,doselect);
|
return GetSpareWeaponRegular(newowner,reverse,doselect);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override void DrawSightPicture(
|
||||||
|
HDStatusBar statusBar,
|
||||||
|
HDWeapon weapon,
|
||||||
|
HDPlayerPawn playerPawn,
|
||||||
|
bool sightbob,
|
||||||
|
Vector2 bob,
|
||||||
|
double fov,
|
||||||
|
bool scopeview,
|
||||||
|
Actor hpc,
|
||||||
|
String whichdot)
|
||||||
|
{
|
||||||
|
// int cx,cy,cw,ch;
|
||||||
|
// [cx,cy,cw,ch]=screen.GetClipRect();
|
||||||
|
// statusBar.SetClipRect(cx,cy,cw,ch);
|
||||||
|
|
||||||
|
String filename = String.Format("graphics/jmpr_reticle%d.png", lastIndicatorStatus + 1);
|
||||||
|
console.printf("blep, %s %d\n", filename, frame);
|
||||||
|
statusBar.drawImage(
|
||||||
|
filename,
|
||||||
|
(0, 0) + bob,
|
||||||
|
statusBar.DI_SCREEN_CENTER | statusBar.DI_ITEM_TOP,
|
||||||
|
scale : (0.5, 0.5));
|
||||||
|
}
|
||||||
|
|
||||||
states
|
states
|
||||||
{
|
{
|
||||||
@ -286,11 +311,11 @@ class JumperCablesUsable : HDWeapon
|
|||||||
stop;
|
stop;
|
||||||
|
|
||||||
select:
|
select:
|
||||||
TNT1 A 0;
|
JMPP A 0;
|
||||||
goto super::select;
|
goto super::select;
|
||||||
|
|
||||||
ready:
|
ready:
|
||||||
TNT1 A 1 {
|
JMPP # 1 {
|
||||||
if(PressingFire()) {
|
if(PressingFire()) {
|
||||||
SetWeaponState("deploy");
|
SetWeaponState("deploy");
|
||||||
}
|
}
|
||||||
@ -299,25 +324,38 @@ class JumperCablesUsable : HDWeapon
|
|||||||
FLineTraceData linetraceData;
|
FLineTraceData linetraceData;
|
||||||
DoLineTrace(HDPlayerPawn(invoker.owner), linetraceData);
|
DoLineTrace(HDPlayerPawn(invoker.owner), linetraceData);
|
||||||
|
|
||||||
|
Vector3 hitPos;
|
||||||
if(linetraceData.hitType != TRACE_HitNone) {
|
if(linetraceData.hitType != TRACE_HitNone) {
|
||||||
Vector3 hitPos = linetraceData.hitLocation - Vec3Offset(0, 0, 0);
|
hitPos = linetraceData.hitLocation - Vec3Offset(0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
SpawnParticleForLineTrace(
|
SpawnParticleForLineTrace(
|
||||||
HDPlayerPawn(invoker.owner),
|
HDPlayerPawn(invoker.owner),
|
||||||
linetraceData);
|
linetraceData);
|
||||||
}
|
|
||||||
|
// console.printf("blep, %d\n", frame);
|
||||||
|
|
||||||
|
//player.getpsprite(PSP_WEAPON).frame = randompick(0, 1, 2);
|
||||||
|
|
||||||
|
// invoker.lastIndicatorStatus += 1;
|
||||||
|
// invoker.lastIndicatorStatus %= 3;
|
||||||
}
|
}
|
||||||
goto readyend;
|
goto readyend;
|
||||||
|
|
||||||
|
readyend:
|
||||||
|
#### # 0 A_ReadyEnd();
|
||||||
|
#### # 0 A_Jump(256,"ready");
|
||||||
|
|
||||||
deploy:
|
deploy:
|
||||||
TNT1 AA 1;
|
JMPP AA 1;
|
||||||
TNT1 AAAA 1;
|
#### #### 1;
|
||||||
TNT1 AAAA 1;
|
#### #### 1;
|
||||||
|
|
||||||
TNT1 A 0 A_JumpIf(!pressingfire(),"ready");
|
#### # 0 A_JumpIf(!pressingfire(),"ready");
|
||||||
TNT1 A 4 A_StartSound("weapons/pismagclick",CHAN_WEAPON);
|
#### # 4 A_StartSound("weapons/pismagclick",CHAN_WEAPON);
|
||||||
TNT1 A 2 A_StartSound("derp/crawl",CHAN_WEAPON,CHANF_OVERLAP);
|
#### # 2 A_StartSound("derp/crawl",CHAN_WEAPON,CHANF_OVERLAP);
|
||||||
|
|
||||||
TNT1 A 1 {
|
#### # 1 {
|
||||||
// invoker.owner.A_Log("Blep");
|
// invoker.owner.A_Log("Blep");
|
||||||
A_WeaponReady(WRF_NOFIRE | WRF_ALLOWRELOAD | WRF_ALLOWUSER4);
|
A_WeaponReady(WRF_NOFIRE | WRF_ALLOWRELOAD | WRF_ALLOWUSER4);
|
||||||
AttachCables(HDPlayerPawn(invoker.owner));
|
AttachCables(HDPlayerPawn(invoker.owner));
|
||||||
@ -325,7 +363,7 @@ class JumperCablesUsable : HDWeapon
|
|||||||
goto ready;
|
goto ready;
|
||||||
|
|
||||||
user3:
|
user3:
|
||||||
#### A 0 A_MagManager("HDBattery");
|
#### # 0 A_MagManager("HDBattery");
|
||||||
goto ready;
|
goto ready;
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -348,6 +386,30 @@ class JumperCablesUsable : HDWeapon
|
|||||||
|
|
||||||
if(LineTraceFindbrokenLine(linetraceData)) {
|
if(LineTraceFindbrokenLine(linetraceData)) {
|
||||||
particleColor = "green";
|
particleColor = "green";
|
||||||
|
|
||||||
|
// Found somethine we can fix!
|
||||||
|
player.getpsprite(PSP_WEAPON).frame = 1;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
if(linetraceData.hitType == TRACE_HitNone) {
|
||||||
|
|
||||||
|
// Didn't hit anything (yellow light).
|
||||||
|
player.getpsprite(PSP_WEAPON).frame = 0;
|
||||||
|
|
||||||
|
} else{
|
||||||
|
|
||||||
|
// Hit something, but it's not broken (green light).
|
||||||
|
player.getpsprite(PSP_WEAPON).frame = 2;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
invoker.lastIndicatorStatus = player.getpsprite(PSP_WEAPON).frame;
|
||||||
|
|
||||||
|
if(linetraceData.hitType == TRACE_HitNone) {
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector3 hitPos = linetraceData.hitLocation - Vec3Offset(0, 0, 0);
|
Vector3 hitPos = linetraceData.hitLocation - Vec3Offset(0, 0, 0);
|
||||||
@ -407,8 +469,10 @@ class JumperCablesUsable : HDWeapon
|
|||||||
pawn.angle,
|
pawn.angle,
|
||||||
48,
|
48,
|
||||||
pawn.pitch,
|
pawn.pitch,
|
||||||
flags : TRF_THRUACTORS,
|
flags : TRF_THRUACTORS | TRF_ABSOFFSET,
|
||||||
offsetz : pawn.height * 0.8,
|
offsetz : pawn.gunPos.z, // * 0.8,
|
||||||
|
offsetforward : pawn.gunPos.x,
|
||||||
|
offsetside : pawn.gunPos.y,
|
||||||
data : linetraceData);
|
data : linetraceData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|