More Quadravol progress. Document charge levels in library.
This commit is contained in:
parent
4230b3b062
commit
c80c2f0e1b
14 changed files with 143 additions and 18 deletions
|
|
@ -3150,6 +3150,18 @@ SWWM_LORETXT_QUADRAVOL =
|
|||
"\n"
|
||||
"\cfTechniques:\c- The weapon has a certain \"extra effective\" special move should you be close enough to your target. Plunging the four bayonets into an enemy and immediately pulling the trigger afterwards will result in a potent point blank explosion that will send them flying, covered in flames.\n"
|
||||
"\n"
|
||||
"The various charge levels of the internal crucible appear to dramatically alter the behavior of fired projectiles. The most notable changes are reflected as such:\n"
|
||||
"\n"
|
||||
"\cfLevel 1:\c- Fast and steady projectile, with moderate blast radius.\n"
|
||||
"\n"
|
||||
"\cfLevel 2:\c- Slower projectile with some drift, doubled blast radius and intensity.\n"
|
||||
"\n"
|
||||
"\cfLevel 3:\c- Slow, massive, erratic projectile, with much more dramatic blast potential. Ruptures into sub-projectiles on impact.\n"
|
||||
"\n"
|
||||
"\cfLevel 4:\c- Projectile bursts into multiple fragments as it leaves the barrel. Each sub-projectile is only slightly weaker than a level 1 fireball.\n"
|
||||
"\n"
|
||||
"\cfLevel 5:\c- At this point, whatever projectile was to be fired will instantly explode outwards. This attack is very destructive, and its damage may increase further if a full cell is still chambered.\n"
|
||||
"\n"
|
||||
"\cxSaya's Notes:\c-\n"
|
||||
"\cfTypical overly dramatic Xekkian stuff. The \"Ardent Cross\", really... But it's as badass as it sounds, at least.\c-\n"
|
||||
"\n"
|
||||
|
|
|
|||
|
|
@ -2924,6 +2924,18 @@ SWWM_LORETXT_QUADRAVOL =
|
|||
"\n"
|
||||
"\cfTécnicas:\c- El arma tiene un cierto movimiento especial \"extra efectivo\" si te encuentras a poca distancia de tu objetivo. Hundiendo las cuatro bayonetas en el enemigo e inmediatamente después apretando el gatillo resultará en una potente explosión a bocajarro que lo enviará volando, cubierto en llamas.\n"
|
||||
"\n"
|
||||
"Los diversos niveles de carga del crisol interno parecen alterar dramáticamente el comportamiento del proyectil. Los cambios más notables se reflejan aquí:\n"
|
||||
"\n"
|
||||
"\cfNivel 1:\c- Proyectil estable y veloz, con un radio de explosión moderado.\n"
|
||||
"\n"
|
||||
"\cfNivel 2:\c- Proyectil más lento con algo de desviación, doble de radio e intensidad de explosión.\n"
|
||||
"\n"
|
||||
"\cfNivel 3:\c- Proyectil lento, masivo, errático, con un potencial de explosión más dramático. Se rompe en sub-proyectiles al impactar.\n"
|
||||
"\n"
|
||||
"\cfNivel 4:\c- El proyectil estalla en múltiples fragmentos al salir del cañón. Cada sub-proyectil es solo ligeramente más débil que una bola de fuego de nivel 1.\n"
|
||||
"\n"
|
||||
"\cfNivel 5:\c- Llegado este punto, cualquier proyectil que fuera disparado explotará al instante hacia fuera. Este ataque es muy destructivo, y su daño puede incrementar aun más si todavía queda una célula llena en la recámara.\n"
|
||||
"\n"
|
||||
"\cxNotas de Saya:\c-\n"
|
||||
"\cfTípicas ñoñerías superdramáticas de los Xekkian. La \"Cruz Ardiente\", en serio... Pero mola tanto como suena, al menos.\c-\n"
|
||||
"\n"
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
[default]
|
||||
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r341 \cu(Thu 18 Aug 16:18:22 CEST 2022)\c-";
|
||||
SWWM_SHORTVER="\cw1.3pre r341 \cu(2022-08-18 16:18:22)\c-";
|
||||
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r343 \cu(Thu 18 Aug 18:33:57 CEST 2022)\c-";
|
||||
SWWM_SHORTVER="\cw1.3pre r343 \cu(2022-08-18 18:33:57)\c-";
|
||||
|
|
|
|||
|
|
@ -32,6 +32,18 @@ The Ardent Cross was the name of the general's sword which, when imbued with mag
|
|||
|
||||
\cfTechniques:\c- The weapon has a certain "extra effective" special move should you be close enough to your target. Plunging the four bayonets into an enemy and immediately pulling the trigger afterwards will result in a potent point blank explosion that will send them flying, covered in flames.
|
||||
|
||||
The various charge levels of the internal crucible appear to dramatically alter the behavior of fired projectiles. The most notable changes are reflected as such:
|
||||
|
||||
\cfLevel 1:\c- Fast and steady projectile, with moderate blast radius.
|
||||
|
||||
\cfLevel 2:\c- Slower projectile with some drift, doubled blast radius and intensity.
|
||||
|
||||
\cfLevel 3:\c- Slow, massive, erratic projectile, with much more dramatic blast potential. Ruptures into sub-projectiles on impact.
|
||||
|
||||
\cfLevel 4:\c- Projectile bursts into multiple fragments as it leaves the barrel. Each sub-projectile is only slightly weaker than a level 1 fireball.
|
||||
|
||||
\cfLevel 5:\c- At this point, whatever projectile was to be fired will instantly explode outwards. This attack is very destructive, and its damage may increase further if a full cell is still chambered.
|
||||
|
||||
\cxSaya's Notes:\c-
|
||||
\cfTypical overly dramatic Xekkian stuff. The "Ardent Cross", really... But it's as badass as it sounds, at least.\c-
|
||||
|
||||
|
|
|
|||
|
|
@ -26,6 +26,18 @@ La Cruz Ardiente era el nombre de la espada del general la cual, al ser imbuida
|
|||
|
||||
\cfTécnicas:\c- El arma tiene un cierto movimiento especial "extra efectivo" si te encuentras a poca distancia de tu objetivo. Hundiendo las cuatro bayonetas en el enemigo e inmediatamente después apretando el gatillo resultará en una potente explosión a bocajarro que lo enviará volando, cubierto en llamas.
|
||||
|
||||
Los diversos niveles de carga del crisol interno parecen alterar dramáticamente el comportamiento del proyectil. Los cambios más notables se reflejan aquí:
|
||||
|
||||
\cfNivel 1:\c- Proyectil estable y veloz, con un radio de explosión moderado.
|
||||
|
||||
\cfNivel 2:\c- Proyectil más lento con algo de desviación, doble de radio e intensidad de explosión.
|
||||
|
||||
\cfNivel 3:\c- Proyectil lento, masivo, errático, con un potencial de explosión más dramático. Se rompe en sub-proyectiles al impactar.
|
||||
|
||||
\cfNivel 4:\c- El proyectil estalla en múltiples fragmentos al salir del cañón. Cada sub-proyectil es solo ligeramente más débil que una bola de fuego de nivel 1.
|
||||
|
||||
\cfNivel 5:\c- Llegado este punto, cualquier proyectil que fuera disparado explotará al instante hacia fuera. Este ataque es muy destructivo, y su daño puede incrementar aun más si todavía queda una célula llena en la recámara.
|
||||
|
||||
\cxNotas de Saya:\c-
|
||||
\cfTípicas ñoñerías superdramáticas de los Xekkian. La "Cruz Ardiente", en serio... Pero mola tanto como suena, al menos.\c-
|
||||
|
||||
|
|
|
|||
|
|
@ -95,7 +95,13 @@ quadshot/casing2 sounds/dlc1/quadshot/quad_casing2.ogg
|
|||
quadshot/casing3 sounds/dlc1/quadshot/quad_casing3.ogg
|
||||
quadshot/casing4 sounds/dlc1/quadshot/quad_casing4.ogg
|
||||
$random quadshot/casing { quadshot/casing1 quadshot/casing2 quadshot/casing3 quadshot/casing4 }
|
||||
// TODO projectile sounds
|
||||
quadshot/hit1 sounds/dlc1/quadshot/quad_explo1.ogg
|
||||
quadshot/hit2 sounds/dlc1/quadshot/quad_explo2.ogg
|
||||
quadshot/hit3 sounds/dlc1/quadshot/quad_explo3.ogg
|
||||
$random quadshot/hit { quadshot/hit1 quadshot/hit2 quadshot/hit3 }
|
||||
quadshot/extrahit sounds/dlc1/quadshot/quad_xexpl.ogg
|
||||
quadshot/pointblank sounds/dlc1/quadshot/quad_xxexpl.ogg
|
||||
quadshot/fly sounds/dlc1/quadshot/quad_fly.ogg
|
||||
|
||||
// TODO sparkster rifle
|
||||
|
||||
|
|
|
|||
BIN
sounds/dlc1/quadshot/quad_explo1.ogg
Normal file
BIN
sounds/dlc1/quadshot/quad_explo1.ogg
Normal file
Binary file not shown.
BIN
sounds/dlc1/quadshot/quad_explo2.ogg
Normal file
BIN
sounds/dlc1/quadshot/quad_explo2.ogg
Normal file
Binary file not shown.
BIN
sounds/dlc1/quadshot/quad_explo3.ogg
Normal file
BIN
sounds/dlc1/quadshot/quad_explo3.ogg
Normal file
Binary file not shown.
BIN
sounds/dlc1/quadshot/quad_fly.ogg
Normal file
BIN
sounds/dlc1/quadshot/quad_fly.ogg
Normal file
Binary file not shown.
BIN
sounds/dlc1/quadshot/quad_xexpl.ogg
Normal file
BIN
sounds/dlc1/quadshot/quad_xexpl.ogg
Normal file
Binary file not shown.
BIN
sounds/dlc1/quadshot/quad_xxexpl.ogg
Normal file
BIN
sounds/dlc1/quadshot/quad_xxexpl.ogg
Normal file
Binary file not shown.
|
|
@ -5,7 +5,7 @@ Class Quadravol : SWWMWeapon
|
|||
{
|
||||
int clipcount;
|
||||
int chargelevel;
|
||||
bool chambered, charged, waschambered, wascharged;
|
||||
bool chambered, charged, waschambered, wascharged, fromfire;
|
||||
bool onehand;
|
||||
bool initialized;
|
||||
|
||||
|
|
@ -76,6 +76,37 @@ Class Quadravol : SWWMWeapon
|
|||
else origin.A_StartSound(UpSound,CHAN_WEAPON,CHANF_OVERLAP);
|
||||
}
|
||||
|
||||
action State A_QuadFire()
|
||||
{
|
||||
static const String BaseNum[] = {"one","two","three","four","five"};
|
||||
static const StateLabel FireStates[] = {"FireOne","FireTwo","FireThree","FireFour","FireFive"};
|
||||
int idx = clamp(invoker.chargelevel-1,0,4);
|
||||
A_StartSound("quadshot/fire"..BaseNum[idx],CHAN_WEAPON,CHANF_OVERLAP);
|
||||
A_PlayerFire();
|
||||
switch ( idx )
|
||||
{
|
||||
case 0:
|
||||
A_Log("\cg// TODO - Fire Level 1\c-");
|
||||
break;
|
||||
case 1:
|
||||
A_Log("\cg// TODO - Fire Level 2\c-");
|
||||
break;
|
||||
case 2:
|
||||
A_Log("\cg// TODO - Fire Level 3\c-");
|
||||
break;
|
||||
case 3:
|
||||
A_Log("\cg// TODO - Fire Level 4\c-");
|
||||
break;
|
||||
case 4:
|
||||
if ( !invoker.charged ) A_Log("\cg// TODO - Fire Level 5+\c-");
|
||||
else A_Log("\cg// TODO - Fire Level 5\c-");
|
||||
break;
|
||||
}
|
||||
invoker.chargelevel = 0;
|
||||
invoker.charged = true; // eat it up
|
||||
return ResolveState(FireStates[idx]);
|
||||
}
|
||||
|
||||
action void A_Eject()
|
||||
{
|
||||
invoker.waschambered = invoker.chambered;
|
||||
|
|
@ -182,7 +213,6 @@ Class Quadravol : SWWMWeapon
|
|||
Super.AttachToOwner(other);
|
||||
}
|
||||
|
||||
|
||||
Default
|
||||
{
|
||||
Tag "$T_QUADRAVOL";
|
||||
|
|
@ -220,23 +250,50 @@ Class Quadravol : SWWMWeapon
|
|||
XZW2 A 1
|
||||
{
|
||||
A_Fill(); // just in case
|
||||
int flg = WRF_ALLOWUSER1|WRF_ALLOWZOOM;
|
||||
if ( invoker.clipcount < invoker.default.clipcount ) flg |= WRF_ALLOWRELOAD;
|
||||
int flg = WRF_ALLOWRELOAD|WRF_ALLOWUSER1|WRF_ALLOWZOOM;
|
||||
if ( (invoker.chargelevel <= 0) && (invoker.Ammo1.Amount <= 0) && (invoker.clipcount <= 0) && !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true) ) flg |= WRF_NOPRIMARY;
|
||||
invoker.fromfire = false;
|
||||
A_WeaponReady(flg);
|
||||
if ( player.cmd.buttons&BT_ATTACK )
|
||||
invoker.CheckAmmo(EitherFire,true);
|
||||
}
|
||||
Wait;
|
||||
Fire:
|
||||
// TODO firing
|
||||
XZW2 A 1
|
||||
{
|
||||
if ( invoker.chargelevel <= 0 )
|
||||
{
|
||||
if ( invoker.clipcount > 0 ) return ResolveState("AltFire");
|
||||
invoker.fromfire = true;
|
||||
return ResolveState("Reload");
|
||||
}
|
||||
return ResolveState(null);
|
||||
return A_QuadFire();
|
||||
}
|
||||
FireOne:
|
||||
XZW2 A 1;
|
||||
XZW3 OPQR 2;
|
||||
XZW3 STUV 3;
|
||||
Goto Ready;
|
||||
FireTwo:
|
||||
XZW2 A 1;
|
||||
XZW3 WXYZ 2;
|
||||
XZW4 ABCD 3;
|
||||
Goto Ready;
|
||||
FireThree:
|
||||
XZW2 A 1;
|
||||
XZW4 EFGH 2;
|
||||
XZW4 IJKL 3;
|
||||
Goto Ready;
|
||||
FireFour:
|
||||
XZW2 A 1;
|
||||
XZW4 MNOP 2;
|
||||
XZW4 QRST 3;
|
||||
Goto Ready;
|
||||
FireFive:
|
||||
XZW2 A 1;
|
||||
XZW4 UVWX 2;
|
||||
XZW4 YZ 3;
|
||||
XZW5 AB 3;
|
||||
Goto Ready;
|
||||
AltFire:
|
||||
XZW2 A 2 A_PlayerCheckGun();
|
||||
|
|
@ -256,8 +313,13 @@ Class Quadravol : SWWMWeapon
|
|||
TNT1 A 1 A_DropCasing();
|
||||
Stop;
|
||||
Reload:
|
||||
// TODO idle animation on full load
|
||||
XZW2 A 2 A_StartSound("quadshot/onehand",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
XZW2 A 2
|
||||
{
|
||||
if ( (invoker.clipcount >= invoker.default.clipcount) || ((invoker.Ammo1.Amount <= 0) && !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true)) )
|
||||
return ResolveState("Idle");
|
||||
A_StartSound("quadshot/onehand",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
return ResolveState(null);
|
||||
}
|
||||
XZW5 MNO 3;
|
||||
Goto ReloadHold;
|
||||
ReloadHold:
|
||||
|
|
@ -272,6 +334,9 @@ Class Quadravol : SWWMWeapon
|
|||
{
|
||||
if ( (invoker.clipcount >= invoker.default.clipcount) || ((invoker.Ammo1.Amount <= 0) && !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true)) )
|
||||
return ResolveState(null);
|
||||
if ( invoker.fromfire && (player.cmd.buttons&BT_ATTACK) )
|
||||
return ResolveState("ReloadHold");
|
||||
invoker.fromfire = false;
|
||||
return A_JumpIf(player.cmd.buttons&BT_RELOAD,"ReloadHold");
|
||||
}
|
||||
XZW6 B 2 A_StartSound("quadshot/twohand",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
|
|
@ -282,18 +347,26 @@ Class Quadravol : SWWMWeapon
|
|||
XZWZ HIJKLMN 2;
|
||||
XZWZ O 0;
|
||||
Stop;
|
||||
Idle:
|
||||
// TODO idle
|
||||
XZW2 A 1 A_Log("\cg// TODO - Idle Animation\c-");
|
||||
XZW2 A 1 A_JumpIf(!(player.cmd.buttons&BT_RELOAD),"Ready");
|
||||
Wait;
|
||||
Zoom:
|
||||
// TODO stance switch
|
||||
XZW2 A 1;
|
||||
Goto Ready;
|
||||
XZW2 A 1 A_Log("\cg// TODO - Stance Switch\c-");
|
||||
XZW2 A 1 A_JumpIf(!(player.cmd.buttons&BT_ZOOM),"Ready");
|
||||
Wait;
|
||||
User1:
|
||||
// TODO melee
|
||||
XZW2 A 1;
|
||||
Goto Ready;
|
||||
XZW2 A 1 A_Log("\cg// TODO - Quick Melee\c-");
|
||||
XZW2 A 1 A_JumpIf(!(player.cmd.buttons&BT_USER1),"Ready");
|
||||
Wait;
|
||||
Deselect:
|
||||
XZW2 A 1 A_StartSound("quadshot/deselect",CHAN_WEAPON,CHANF_OVERLAP);
|
||||
XZW2 BCDEFGHIJKLMNOPQR 1;
|
||||
XZW2 R -1 A_FullLower();
|
||||
Stop;
|
||||
// TODO one-handed states
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -104,9 +104,7 @@ Class mkBloodSpray : Actor
|
|||
return;
|
||||
}
|
||||
if ( isFrozen() ) return;
|
||||
Vector3 setofs;
|
||||
setofs.xy = RotateVector(attachofs.xy,target.angle);
|
||||
setofs.z = attachofs.z;
|
||||
Vector3 setofs = SWWMUtility.RotateVector3(attachofs,target.angle);
|
||||
SetOrigin(level.Vec3Offset(target.pos,setofs),false);
|
||||
int sz = max(1,args[0]/2);
|
||||
double ang, pt;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue