Major Black Shell rebalance.
This commit is contained in:
parent
2e12edfc3e
commit
bd300ebdf4
6 changed files with 40 additions and 20 deletions
|
|
@ -1,2 +1,2 @@
|
|||
[default]
|
||||
SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r783 \cu(Fri 22 Jan 20:18:02 CET 2021)";
|
||||
SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r784 \cu(Sat 23 Jan 12:45:15 CET 2021)";
|
||||
|
|
|
|||
|
|
@ -587,6 +587,10 @@ spreadgun/slugf1 sounds/spreadgun/spread_slugf1.ogg
|
|||
spreadgun/slugf2 sounds/spreadgun/spread_slugf2.ogg
|
||||
$random spreadgun/slugf { spreadgun/slugf1 spreadgun/slugf2 }
|
||||
spreadgun/corrode sounds/spreadgun/spread_poison.ogg
|
||||
spreadgun/corrodepuff1 sounds/spreadgun/spread_poisonpuff1.ogg
|
||||
spreadgun/corrodepuff2 sounds/spreadgun/spread_poisonpuff2.ogg
|
||||
$random spreadgun/corrodepuff { spreadgun/corrodepuff1 spreadgun/corrodepuff2 }
|
||||
$limit spreadgun/corrodepuff 32
|
||||
spreadgun/ball1 sounds/spreadgun/spread_ball1.ogg
|
||||
spreadgun/ball2 sounds/spreadgun/spread_ball2.ogg
|
||||
spreadgun/ball3 sounds/spreadgun/spread_ball3.ogg
|
||||
|
|
|
|||
Binary file not shown.
BIN
sounds/spreadgun/spread_poisonpuff1.ogg
Normal file
BIN
sounds/spreadgun/spread_poisonpuff1.ogg
Normal file
Binary file not shown.
BIN
sounds/spreadgun/spread_poisonpuff2.ogg
Normal file
BIN
sounds/spreadgun/spread_poisonpuff2.ogg
Normal file
Binary file not shown.
|
|
@ -854,7 +854,7 @@ Class CorrodeSmoke : SWWMHalfSmoke
|
|||
|
||||
Class CorrodeDebuff : Inventory
|
||||
{
|
||||
int cnt, cnt2;
|
||||
int cnt, cnt2, cnt3;
|
||||
Actor instigator;
|
||||
bool wasalive;
|
||||
|
||||
|
|
@ -866,7 +866,6 @@ Class CorrodeDebuff : Inventory
|
|||
Inventory.InterHubAmount 0;
|
||||
+INVENTORY.UNDROPPABLE;
|
||||
+INVENTORY.UNTOSSABLE;
|
||||
+NOEXTREMEDEATH;
|
||||
}
|
||||
override int DoSpecialDamage( Actor target, int Damage, Name DamageType )
|
||||
{
|
||||
|
|
@ -878,12 +877,25 @@ Class CorrodeDebuff : Inventory
|
|||
c = CorrodeDebuff(Spawn("CorrodeDebuff",target.pos));
|
||||
c.AttachToOwner(target);
|
||||
c.cnt = 5; // slight delay
|
||||
c.A_StartSound("spreadgun/corrode",CHAN_VOICE,CHANF_DEFAULT);
|
||||
c.Amount = min(Damage*8,int(Amount*.6)); // prevent "escalating" spread
|
||||
c.A_StartSound("spreadgun/corrode",CHAN_VOICE,CHANF_DEFAULT,min(c.Amount/100.,1.));
|
||||
}
|
||||
if ( c.Amount < int(Amount*.6) ) c.Amount = clamp(c.Amount+Damage*8,0,int(Amount*.6)); // prevent "escalating" spread
|
||||
else if ( c.Amount < int(Amount*.6) ) c.Amount = min(c.Amount+Damage*8,int(Amount*.6)); // prevent "escalating" spread
|
||||
c.instigator = instigator;
|
||||
return 0; // no direct damage
|
||||
}
|
||||
override void AttachToOwner( Actor other )
|
||||
{
|
||||
Super.AttachToOwner(other);
|
||||
cnt3 = Random[Corrode](0,19); // randomize puff sound offset
|
||||
}
|
||||
override void OwnerDied()
|
||||
{
|
||||
Super.OwnerDied();
|
||||
// forcibly update
|
||||
wasalive = true;
|
||||
cnt = -1;
|
||||
}
|
||||
override void DoEffect()
|
||||
{
|
||||
Super.DoEffect();
|
||||
|
|
@ -902,38 +914,42 @@ Class CorrodeDebuff : Inventory
|
|||
cnt--;
|
||||
if ( cnt < 0 )
|
||||
{
|
||||
cnt = clamp((100-Amount)/10,5,15);
|
||||
if ( !Random[Corrode](0,3) ) Owner.Howl();
|
||||
double maxrad = max(Owner.radius,Owner.height);
|
||||
int defh = Owner.GetSpawnHealth();
|
||||
Owner.DamageMobj(self,instigator?instigator:Actor(self),clamp(Amount/8,1,50),'Corroded',DMG_THRUSTLESS);
|
||||
bool justdied = (wasalive && (!Owner || Owner.Health <= 0));
|
||||
bool justdied = (wasalive && (!Owner || (Owner.Health <= 0)));
|
||||
if ( justdied )
|
||||
{
|
||||
maxrad += 50;
|
||||
Amount = max(100,Amount);
|
||||
maxrad += 60;
|
||||
Amount = min(Amount+int(defh**.5),MaxAmount);
|
||||
A_StartSound("spreadgun/corrode",CHAN_VOICE,CHANF_DEFAULT);
|
||||
}
|
||||
if ( !wasalive ) maxrad += 20;
|
||||
if ( !wasalive ) maxrad += 25;
|
||||
SWWMUtility.DoExplosion(self,clamp(Amount/8,1,50),0,maxrad*1.2,maxrad*.9,DE_NOBLEED|DE_NOSPLASH|DE_HOWL,'Corroded',Owner);
|
||||
int smokefact = int(clamp(maxrad/32.,1,8));
|
||||
int numpt = Random[Corrode](-1,1*smokefact);
|
||||
if ( justdied ) numpt = Random[Corrode](4,6)*smokefact;
|
||||
int numpt = Random[Corrode](0,2*smokefact);
|
||||
if ( justdied ) numpt = Random[Corrode](8,12)*smokefact;
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
let s = Spawn("CorrodeSmoke",level.Vec3Offset(Owner.pos,(.8*FRandom[Corrode](-Owner.radius,Owner.radius),.8*FRandom[Corrode](-Owner.radius,Owner.radius),FRandom[Corrode](.1*Owner.Height,.9*Owner.Height))));
|
||||
s.vel = Owner.vel*.5;
|
||||
if ( justdied ) s.vel += (FRandom[Corrode](-1,1),FRandom[Corrode](-1,1),FRandom[Corrode](-1,1))*FRandom[Corrode](2.,4.);
|
||||
if ( justdied ) s.vel += (FRandom[Corrode](-1,1),FRandom[Corrode](-1,1),FRandom[Corrode](-1,1))*FRandom[Corrode](2.,8.);
|
||||
else if ( !wasalive ) s.vel += (FRandom[Corrode](-1,1),FRandom[Corrode](-1,1),FRandom[Corrode](-1,1))*FRandom[Corrode](.2,2.);
|
||||
else s.vel += (FRandom[Corrode](-1,1),FRandom[Corrode](-1,1),FRandom[Corrode](-1,1))*FRandom[Corrode](.1,1.);
|
||||
s.scale *= FRandom[Corrode](2.,3.);
|
||||
s.alpha *= Clamp(Amount/10.,0.,.6);
|
||||
if ( justdied ) s.special1 = Random[Corrode](0,1);
|
||||
if ( justdied ) s.special1 = Random[Corrode](0,2);
|
||||
else if ( !wasalive ) s.special1 = Random[Corrode](0,1);
|
||||
}
|
||||
cnt = clamp((100-Amount)/10,5,15);
|
||||
}
|
||||
wasalive = (Owner && Owner.Health > 0);
|
||||
cnt3++;
|
||||
if ( !(cnt3%20) ) A_StartSound("spreadgun/corrodepuff",CHAN_BODY,CHANF_OVERLAP,min(Amount/200.,1.),2.,FRandom[Corrode](.8,1.2)-min(Amount/200.,.4));
|
||||
cnt2++;
|
||||
if ( cnt2 < 4 ) return;
|
||||
cnt2 = 0;
|
||||
if ( cnt2 < 3 ) return;
|
||||
cnt2 = (!Owner||(Owner.Health<=Owner.GetGibHealth()))?-2:0; // slower decay when gibbed
|
||||
Amount -= 1;
|
||||
if ( Amount > 100 ) Amount -= max(0,Amount/50-1);
|
||||
if ( !Owner ) return;
|
||||
|
|
@ -1002,9 +1018,9 @@ Class CorrosiveSplash : Actor
|
|||
c = CorrodeDebuff(Spawn("CorrodeDebuff",target.pos));
|
||||
c.AttachToOwner(target);
|
||||
c.cnt = 5; // slight delay
|
||||
c.A_StartSound("spreadgun/corrode",CHAN_VOICE,CHANF_DEFAULT);
|
||||
}
|
||||
c.Amount = clamp(c.Amount+Damage,100,c.MaxAmount);
|
||||
c.Amount = min(c.Amount+Damage,c.MaxAmount);
|
||||
c.A_StartSound("spreadgun/corrode",CHAN_VOICE,CHANF_DEFAULT,min(c.Amount/100.,1.));
|
||||
c.instigator = self.target;
|
||||
return 0; // no direct damage
|
||||
}
|
||||
|
|
@ -1106,10 +1122,10 @@ Class CorrosiveFlechette : Actor
|
|||
c = CorrodeDebuff(Spawn("CorrodeDebuff",a.pos));
|
||||
c.AttachToOwner(a);
|
||||
}
|
||||
c.Amount = clamp(c.Amount+25,100,c.MaxAmount);
|
||||
c.Amount = min(c.Amount+25,c.MaxAmount);
|
||||
c.cnt = 0;
|
||||
c.instigator = target;
|
||||
c.A_StartSound("spreadgun/corrode",CHAN_VOICE,CHANF_DEFAULT);
|
||||
c.A_StartSound("spreadgun/corrode",CHAN_VOICE,CHANF_DEFAULT,min(c.Amount/100.,1.));
|
||||
}
|
||||
int dmg = 3;
|
||||
int amt = 3;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue