Add support for additional cloak styles and use native alpha in RA,D2k,TS.
This commit is contained in:
@@ -39,6 +39,8 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
// Type tag for DetectionTypes
|
// Type tag for DetectionTypes
|
||||||
public class DetectionType { }
|
public class DetectionType { }
|
||||||
|
|
||||||
|
public enum CloakStyle { None, Alpha, Color, Palette }
|
||||||
|
|
||||||
[Desc("This unit can cloak and uncloak in specific situations.")]
|
[Desc("This unit can cloak and uncloak in specific situations.")]
|
||||||
public class CloakInfo : PausableConditionalTraitInfo
|
public class CloakInfo : PausableConditionalTraitInfo
|
||||||
{
|
{
|
||||||
@@ -57,10 +59,6 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public readonly string CloakSound = null;
|
public readonly string CloakSound = null;
|
||||||
public readonly string UncloakSound = null;
|
public readonly string UncloakSound = null;
|
||||||
|
|
||||||
[PaletteReference(nameof(IsPlayerPalette))]
|
|
||||||
public readonly string Palette = "cloak";
|
|
||||||
public readonly bool IsPlayerPalette = false;
|
|
||||||
|
|
||||||
public readonly BitSet<DetectionType> DetectionTypes = new("Cloak");
|
public readonly BitSet<DetectionType> DetectionTypes = new("Cloak");
|
||||||
|
|
||||||
[GrantedConditionReference]
|
[GrantedConditionReference]
|
||||||
@@ -70,6 +68,22 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
[Desc("The type of cloak. Same type of cloaks won't trigger cloaking and uncloaking sound and effect.")]
|
[Desc("The type of cloak. Same type of cloaks won't trigger cloaking and uncloaking sound and effect.")]
|
||||||
public readonly string CloakType = null;
|
public readonly string CloakType = null;
|
||||||
|
|
||||||
|
[Desc("Render effect to use when cloaked.")]
|
||||||
|
public readonly CloakStyle CloakStyle = CloakStyle.Alpha;
|
||||||
|
|
||||||
|
[Desc("The alpha level to use when cloaked when using Alpha CloakStyle.")]
|
||||||
|
public readonly float CloakedAlpha = 0.55f;
|
||||||
|
|
||||||
|
[Desc("The color to use when cloaked when using Color CloakStyle.")]
|
||||||
|
public readonly Color CloakedColor = Color.FromArgb(140, 0, 0, 0);
|
||||||
|
|
||||||
|
[PaletteReference(nameof(IsPlayerPalette))]
|
||||||
|
[Desc("The palette to use when cloaked when using Palette CloakStyle.")]
|
||||||
|
public readonly string CloakedPalette = null;
|
||||||
|
|
||||||
|
[Desc("Indicates that CloakedPalette is a player palette when using Palette CloakStyle.")]
|
||||||
|
public readonly bool IsPlayerPalette = false;
|
||||||
|
|
||||||
[Desc("Which image to use for the effect played when cloaking or uncloaking.")]
|
[Desc("Which image to use for the effect played when cloaking or uncloaking.")]
|
||||||
public readonly string EffectImage = null;
|
public readonly string EffectImage = null;
|
||||||
|
|
||||||
@@ -95,8 +109,11 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
}
|
}
|
||||||
|
|
||||||
public class Cloak : PausableConditionalTrait<CloakInfo>, IRenderModifier, INotifyDamage, INotifyUnloadCargo, INotifyLoadCargo, INotifyDemolition, INotifyInfiltration,
|
public class Cloak : PausableConditionalTrait<CloakInfo>, IRenderModifier, INotifyDamage, INotifyUnloadCargo, INotifyLoadCargo, INotifyDemolition, INotifyInfiltration,
|
||||||
INotifyAttack, ITick, IVisibilityModifier, IRadarColorModifier, INotifyCreated, INotifyDockClient, INotifySupportPower
|
INotifyAttack, ITick, IVisibilityModifier, IRadarColorModifier, INotifyDockClient, INotifySupportPower
|
||||||
{
|
{
|
||||||
|
readonly float3 cloakedColor;
|
||||||
|
readonly float cloakedColorAlpha;
|
||||||
|
|
||||||
[Sync]
|
[Sync]
|
||||||
int remainingTime;
|
int remainingTime;
|
||||||
|
|
||||||
@@ -112,6 +129,8 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
: base(info)
|
: base(info)
|
||||||
{
|
{
|
||||||
remainingTime = info.InitialDelay;
|
remainingTime = info.InitialDelay;
|
||||||
|
cloakedColor = new float3(info.CloakedColor.R, info.CloakedColor.G, info.CloakedColor.B) / 255f;
|
||||||
|
cloakedColorAlpha = info.CloakedColor.A / 255f;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Created(Actor self)
|
protected override void Created(Actor self)
|
||||||
@@ -162,15 +181,28 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
if (Cloaked && IsVisible(self, self.World.RenderPlayer))
|
if (Cloaked && IsVisible(self, self.World.RenderPlayer))
|
||||||
{
|
{
|
||||||
var palette = wr.Palette(Info.IsPlayerPalette ? Info.Palette + self.Owner.InternalName : Info.Palette);
|
switch (Info.CloakStyle)
|
||||||
|
{
|
||||||
|
case CloakStyle.Alpha:
|
||||||
|
return r.Select(a => !a.IsDecoration && a is IModifyableRenderable mr ? mr.WithAlpha(Info.CloakedAlpha) : a);
|
||||||
|
|
||||||
if (palette == null)
|
case CloakStyle.Color:
|
||||||
return r;
|
return r.Select(a => !a.IsDecoration && a is IModifyableRenderable mr ?
|
||||||
else
|
mr.WithTint(cloakedColor, mr.TintModifiers | TintModifiers.ReplaceColor).WithAlpha(cloakedColorAlpha) :
|
||||||
return r.Select(a => !a.IsDecoration && a is IPalettedRenderable pr ? pr.WithPalette(palette) : a);
|
a);
|
||||||
|
|
||||||
|
case CloakStyle.Palette:
|
||||||
|
{
|
||||||
|
var palette = wr.Palette(Info.IsPlayerPalette ? Info.CloakedPalette + self.Owner.InternalName : Info.CloakedPalette);
|
||||||
|
return r.Select(a => !a.IsDecoration && a is IPalettedRenderable pr ? pr.WithPalette(palette) : a);
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
return r;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
return SpriteRenderable.None;
|
return SpriteRenderable.None;
|
||||||
}
|
}
|
||||||
|
|
||||||
IEnumerable<Rectangle> IRenderModifier.ModifyScreenBounds(Actor self, WorldRenderer wr, IEnumerable<Rectangle> bounds)
|
IEnumerable<Rectangle> IRenderModifier.ModifyScreenBounds(Actor self, WorldRenderer wr, IEnumerable<Rectangle> bounds)
|
||||||
|
|||||||
@@ -0,0 +1,49 @@
|
|||||||
|
#region Copyright & License Information
|
||||||
|
/*
|
||||||
|
* Copyright (c) The OpenRA Developers and Contributors
|
||||||
|
* This file is part of OpenRA, which is free software. It is made
|
||||||
|
* available to you under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation, either version 3 of
|
||||||
|
* the License, or (at your option) any later version. For more
|
||||||
|
* information, see COPYING.
|
||||||
|
*/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace OpenRA.Mods.Common.UpdateRules.Rules
|
||||||
|
{
|
||||||
|
public class ReplaceCloakPalette : UpdateRule
|
||||||
|
{
|
||||||
|
public override string Name => "Change default Cloak style from Palette to Alpha.";
|
||||||
|
|
||||||
|
public override string Description =>
|
||||||
|
"Cloak has gained several new rendering modes\n" +
|
||||||
|
"and its default behaviour has changed from using a palette to native alpha.";
|
||||||
|
|
||||||
|
readonly List<string> locations = new();
|
||||||
|
|
||||||
|
public override IEnumerable<string> AfterUpdate(ModData modData)
|
||||||
|
{
|
||||||
|
if (locations.Count > 0)
|
||||||
|
yield return "Cloak no longer defaults to replacing the actor's palette.\n" +
|
||||||
|
"If you wish to keep the previous behavior you wish to change the\n" +
|
||||||
|
"Cloak definitions on the following actor definitions:\n" +
|
||||||
|
UpdateUtils.FormatMessageList(locations);
|
||||||
|
|
||||||
|
locations.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override IEnumerable<string> UpdateActorNode(ModData modData, MiniYamlNodeBuilder actorNode)
|
||||||
|
{
|
||||||
|
foreach (var cloak in actorNode.ChildrenMatching("Cloak"))
|
||||||
|
{
|
||||||
|
cloak.RemoveNodes("Palette");
|
||||||
|
cloak.RemoveNodes("IsPlayerPalette");
|
||||||
|
locations.Add($"{actorNode.Key} ({actorNode.Location.Filename})");
|
||||||
|
}
|
||||||
|
|
||||||
|
yield break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -85,6 +85,7 @@ namespace OpenRA.Mods.Common.UpdateRules
|
|||||||
new ExtractResourceStorageFromHarvester(),
|
new ExtractResourceStorageFromHarvester(),
|
||||||
new ReplacePaletteModifiers(),
|
new ReplacePaletteModifiers(),
|
||||||
new RemoveConyardChronoReturnAnimation(),
|
new RemoveConyardChronoReturnAnimation(),
|
||||||
|
new ReplaceCloakPalette(),
|
||||||
|
|
||||||
// Execute these rules last to avoid premature yaml merge crashes.
|
// Execute these rules last to avoid premature yaml merge crashes.
|
||||||
new AbstractDocking(),
|
new AbstractDocking(),
|
||||||
|
|||||||
@@ -208,6 +208,8 @@ C17:
|
|||||||
Cloak:
|
Cloak:
|
||||||
InitialDelay: 0
|
InitialDelay: 0
|
||||||
CloakDelay: 0
|
CloakDelay: 0
|
||||||
|
CloakStyle: Palette
|
||||||
|
CloakedPalette: cloak
|
||||||
DetectionTypes: C17
|
DetectionTypes: C17
|
||||||
RequiresCondition: global-C17-stealth
|
RequiresCondition: global-C17-stealth
|
||||||
Contrail@1:
|
Contrail@1:
|
||||||
|
|||||||
@@ -199,6 +199,8 @@
|
|||||||
CloakDelay: 90
|
CloakDelay: 90
|
||||||
CloakSound: trans1.aud
|
CloakSound: trans1.aud
|
||||||
UncloakSound: trans1.aud
|
UncloakSound: trans1.aud
|
||||||
|
CloakStyle: Palette
|
||||||
|
CloakedPalette: cloak
|
||||||
PauseOnCondition: cloak-force-disabled
|
PauseOnCondition: cloak-force-disabled
|
||||||
RequiresCondition: cloak-crate-collected
|
RequiresCondition: cloak-crate-collected
|
||||||
ExternalCondition@CLOAK:
|
ExternalCondition@CLOAK:
|
||||||
|
|||||||
@@ -708,6 +708,8 @@ STNK:
|
|||||||
CloakDelay: 85
|
CloakDelay: 85
|
||||||
CloakSound: trans1.aud
|
CloakSound: trans1.aud
|
||||||
UncloakSound: trans1.aud
|
UncloakSound: trans1.aud
|
||||||
|
CloakStyle: Palette
|
||||||
|
CloakedPalette: cloak
|
||||||
UncloakOn: Attack, Unload, Dock, Damage, Heal
|
UncloakOn: Attack, Unload, Dock, Damage, Heal
|
||||||
PauseOnCondition: cloak-force-disabled
|
PauseOnCondition: cloak-force-disabled
|
||||||
GrantConditionOnDamageState@UNCLOAK:
|
GrantConditionOnDamageState@UNCLOAK:
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
^Palettes:
|
^Palettes:
|
||||||
-PlayerColorPalette:
|
-PlayerColorPalette:
|
||||||
-PaletteFromPlayerPaletteWithAlpha@cloak:
|
|
||||||
IndexedPlayerPalette:
|
IndexedPlayerPalette:
|
||||||
BasePalette: d2k
|
BasePalette: d2k
|
||||||
BaseName: player
|
BaseName: player
|
||||||
@@ -15,7 +14,3 @@
|
|||||||
Mercenaries: 239, 238, 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, 227, 226, 225, 224
|
Mercenaries: 239, 238, 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, 227, 226, 225, 224
|
||||||
Neutral: 255, 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, 240
|
Neutral: 255, 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, 240
|
||||||
Creeps: 255, 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, 240
|
Creeps: 255, 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, 240
|
||||||
PaletteFromPlayerPaletteWithAlpha@Cloak:
|
|
||||||
BaseName: cloak
|
|
||||||
BasePalette: player
|
|
||||||
Alpha: 0.55
|
|
||||||
|
|||||||
@@ -186,7 +186,6 @@ fremen:
|
|||||||
InitialDelay: 85
|
InitialDelay: 85
|
||||||
CloakDelay: 85
|
CloakDelay: 85
|
||||||
UncloakOn: Attack, Unload, Infiltrate, Demolish, Dock, Damage, Heal
|
UncloakOn: Attack, Unload, Infiltrate, Demolish, Dock, Damage, Heal
|
||||||
IsPlayerPalette: true
|
|
||||||
PauseOnCondition: cloak-force-disabled
|
PauseOnCondition: cloak-force-disabled
|
||||||
GrantConditionOnDamageState@UNCLOAK:
|
GrantConditionOnDamageState@UNCLOAK:
|
||||||
Condition: cloak-force-disabled
|
Condition: cloak-force-disabled
|
||||||
@@ -328,7 +327,6 @@ saboteur:
|
|||||||
CloakDelay: 25
|
CloakDelay: 25
|
||||||
CloakSound: STEALTH1.WAV
|
CloakSound: STEALTH1.WAV
|
||||||
UncloakOn: Attack, Unload, Infiltrate, Demolish, Damage, Heal
|
UncloakOn: Attack, Unload, Infiltrate, Demolish, Damage, Heal
|
||||||
IsPlayerPalette: true
|
|
||||||
PauseOnCondition: cloak-force-disabled
|
PauseOnCondition: cloak-force-disabled
|
||||||
GrantConditionOnDamageState@UNCLOAK:
|
GrantConditionOnDamageState@UNCLOAK:
|
||||||
Condition: cloak-force-disabled
|
Condition: cloak-force-disabled
|
||||||
|
|||||||
@@ -44,7 +44,3 @@
|
|||||||
RemapIndex: 255, 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, 240
|
RemapIndex: 255, 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, 240
|
||||||
MenuPostProcessEffect:
|
MenuPostProcessEffect:
|
||||||
FlashPostProcessEffect:
|
FlashPostProcessEffect:
|
||||||
PaletteFromPlayerPaletteWithAlpha@cloak:
|
|
||||||
BaseName: cloak
|
|
||||||
BasePalette: player
|
|
||||||
Alpha: 0.55
|
|
||||||
|
|||||||
@@ -498,7 +498,6 @@ stealth_raider:
|
|||||||
InitialDelay: 45
|
InitialDelay: 45
|
||||||
CloakDelay: 90
|
CloakDelay: 90
|
||||||
UncloakOn: Attack, Unload, Infiltrate, Demolish, Dock, Damage, Heal
|
UncloakOn: Attack, Unload, Infiltrate, Demolish, Dock, Damage, Heal
|
||||||
IsPlayerPalette: true
|
|
||||||
PauseOnCondition: cloak-force-disabled
|
PauseOnCondition: cloak-force-disabled
|
||||||
GrantConditionOnDamageState@UNCLOAK:
|
GrantConditionOnDamageState@UNCLOAK:
|
||||||
Condition: cloak-force-disabled
|
Condition: cloak-force-disabled
|
||||||
|
|||||||
@@ -316,7 +316,6 @@ SNIPER:
|
|||||||
CloakSound:
|
CloakSound:
|
||||||
UncloakSound:
|
UncloakSound:
|
||||||
UncloakOn: Attack, Unload, Infiltrate, Demolish, Move
|
UncloakOn: Attack, Unload, Infiltrate, Demolish, Move
|
||||||
IsPlayerPalette: true
|
|
||||||
PauseOnCondition: cloak-force-disabled
|
PauseOnCondition: cloak-force-disabled
|
||||||
GrantConditionOnDamageState@UNCLOAK:
|
GrantConditionOnDamageState@UNCLOAK:
|
||||||
Condition: cloak-force-disabled
|
Condition: cloak-force-disabled
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
^Palettes:
|
^Palettes:
|
||||||
-PlayerColorPalette:
|
-PlayerColorPalette:
|
||||||
-PlayerColorPalette@NOSHADOW:
|
-PlayerColorPalette@NOSHADOW:
|
||||||
-PaletteFromPlayerPaletteWithAlpha@cloak:
|
|
||||||
IndexedPlayerPalette:
|
IndexedPlayerPalette:
|
||||||
BasePalette: player
|
BasePalette: player
|
||||||
BaseName: player
|
BaseName: player
|
||||||
@@ -40,7 +39,3 @@
|
|||||||
Creeps: 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143
|
Creeps: 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143
|
||||||
GoodGuy: 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175
|
GoodGuy: 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175
|
||||||
BadGuy: 229, 230, 231, 232, 233, 234, 235, 8, 236, 237, 238, 239, 221, 222, 223, 223
|
BadGuy: 229, 230, 231, 232, 233, 234, 235, 8, 236, 237, 238, 239, 221, 222, 223, 223
|
||||||
PaletteFromPlayerPaletteWithAlpha@Cloak:
|
|
||||||
BaseName: cloak
|
|
||||||
BasePalette: player
|
|
||||||
Alpha: 0.55
|
|
||||||
|
|||||||
@@ -559,10 +559,10 @@
|
|||||||
DetectionTypes: Underwater
|
DetectionTypes: Underwater
|
||||||
InitialDelay: 0
|
InitialDelay: 0
|
||||||
CloakDelay: 50
|
CloakDelay: 50
|
||||||
|
CloakStyle: Color
|
||||||
CloakSound: subshow1.aud
|
CloakSound: subshow1.aud
|
||||||
UncloakSound: subshow1.aud
|
UncloakSound: subshow1.aud
|
||||||
CloakedCondition: underwater
|
CloakedCondition: underwater
|
||||||
Palette: submerged
|
|
||||||
PauseOnCondition: cloak-force-disabled
|
PauseOnCondition: cloak-force-disabled
|
||||||
GrantConditionOnDamageState@UNCLOAK:
|
GrantConditionOnDamageState@UNCLOAK:
|
||||||
Condition: cloak-force-disabled
|
Condition: cloak-force-disabled
|
||||||
@@ -1230,7 +1230,7 @@
|
|||||||
Cloak:
|
Cloak:
|
||||||
CloakSound:
|
CloakSound:
|
||||||
UncloakSound:
|
UncloakSound:
|
||||||
Palette:
|
CloakStyle: None
|
||||||
DetectionTypes: Mine
|
DetectionTypes: Mine
|
||||||
InitialDelay: 0
|
InitialDelay: 0
|
||||||
Tooltip:
|
Tooltip:
|
||||||
|
|||||||
@@ -664,7 +664,6 @@ THF:
|
|||||||
CloakDelay: 120
|
CloakDelay: 120
|
||||||
UncloakOn: Attack, Unload, Infiltrate, Demolish, Move
|
UncloakOn: Attack, Unload, Infiltrate, Demolish, Move
|
||||||
DetectionTypes: Cloak
|
DetectionTypes: Cloak
|
||||||
IsPlayerPalette: true
|
|
||||||
PauseOnCondition: cloak-force-disabled
|
PauseOnCondition: cloak-force-disabled
|
||||||
GrantConditionOnDamageState@UNCLOAK:
|
GrantConditionOnDamageState@UNCLOAK:
|
||||||
Condition: cloak-force-disabled
|
Condition: cloak-force-disabled
|
||||||
|
|||||||
@@ -56,12 +56,6 @@
|
|||||||
G: 0
|
G: 0
|
||||||
B: 0
|
B: 0
|
||||||
A: 140
|
A: 140
|
||||||
PaletteFromRGBA@submerged:
|
|
||||||
Name: submerged
|
|
||||||
R: 0
|
|
||||||
G: 0
|
|
||||||
B: 0
|
|
||||||
A: 140
|
|
||||||
PaletteFromRGBA@moveflash:
|
PaletteFromRGBA@moveflash:
|
||||||
Name: moveflash
|
Name: moveflash
|
||||||
R: 255
|
R: 255
|
||||||
@@ -80,10 +74,6 @@
|
|||||||
BaseName: player-noshadow
|
BaseName: player-noshadow
|
||||||
BasePalette: player-noshadow
|
BasePalette: player-noshadow
|
||||||
RemapIndex: 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95
|
RemapIndex: 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95
|
||||||
PaletteFromPlayerPaletteWithAlpha@cloak:
|
|
||||||
BaseName: cloak
|
|
||||||
BasePalette: player
|
|
||||||
Alpha: 0.55
|
|
||||||
MenuPostProcessEffect:
|
MenuPostProcessEffect:
|
||||||
RotationPaletteEffect@defaultwater:
|
RotationPaletteEffect@defaultwater:
|
||||||
Palettes: terrain
|
Palettes: terrain
|
||||||
|
|||||||
@@ -795,7 +795,6 @@ HBOX:
|
|||||||
Cloak:
|
Cloak:
|
||||||
InitialDelay: 125
|
InitialDelay: 125
|
||||||
CloakDelay: 60
|
CloakDelay: 60
|
||||||
IsPlayerPalette: true
|
|
||||||
PauseOnCondition: cloak-force-disabled
|
PauseOnCondition: cloak-force-disabled
|
||||||
GrantConditionOnDamageState@UNCLOAK:
|
GrantConditionOnDamageState@UNCLOAK:
|
||||||
Condition: cloak-force-disabled
|
Condition: cloak-force-disabled
|
||||||
|
|||||||
@@ -919,7 +919,6 @@ STNK:
|
|||||||
CloakDelay: 175
|
CloakDelay: 175
|
||||||
CloakSound: appear1.aud
|
CloakSound: appear1.aud
|
||||||
UncloakSound: appear1.aud
|
UncloakSound: appear1.aud
|
||||||
IsPlayerPalette: true
|
|
||||||
PauseOnCondition: cloak-force-disabled
|
PauseOnCondition: cloak-force-disabled
|
||||||
UncloakOn: Attack, Load, Unload, Heal, Dock
|
UncloakOn: Attack, Load, Unload, Heal, Dock
|
||||||
GrantConditionOnDamageState@UNCLOAK:
|
GrantConditionOnDamageState@UNCLOAK:
|
||||||
|
|||||||
@@ -129,7 +129,6 @@
|
|||||||
RequiresCondition: cloakgenerator || crate-cloak
|
RequiresCondition: cloakgenerator || crate-cloak
|
||||||
InitialDelay: 0
|
InitialDelay: 0
|
||||||
CloakDelay: 90
|
CloakDelay: 90
|
||||||
IsPlayerPalette: true
|
|
||||||
CloakSound: cloak5.aud
|
CloakSound: cloak5.aud
|
||||||
UncloakSound: cloak5.aud
|
UncloakSound: cloak5.aud
|
||||||
UncloakOn: Attack, Unload, Infiltrate, Demolish, Damage, Heal, SupportPower
|
UncloakOn: Attack, Unload, Infiltrate, Demolish, Damage, Heal, SupportPower
|
||||||
|
|||||||
@@ -526,7 +526,6 @@ STNK:
|
|||||||
CloakDelay: 90
|
CloakDelay: 90
|
||||||
CloakSound: cloak5.aud
|
CloakSound: cloak5.aud
|
||||||
UncloakSound: cloak5.aud
|
UncloakSound: cloak5.aud
|
||||||
IsPlayerPalette: true
|
|
||||||
UncloakOn: Attack, Unload, Infiltrate, Demolish, Damage, Heal
|
UncloakOn: Attack, Unload, Infiltrate, Demolish, Damage, Heal
|
||||||
PauseOnCondition: cloak-force-disabled || empdisable
|
PauseOnCondition: cloak-force-disabled || empdisable
|
||||||
CloakType: nod-stealth
|
CloakType: nod-stealth
|
||||||
|
|||||||
@@ -152,10 +152,6 @@
|
|||||||
BaseName: player-nobright
|
BaseName: player-nobright
|
||||||
BasePalette: player-nobright
|
BasePalette: player-nobright
|
||||||
RemapIndex: 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31
|
RemapIndex: 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31
|
||||||
PaletteFromPlayerPaletteWithAlpha@cloak:
|
|
||||||
BaseName: cloak
|
|
||||||
BasePalette: player
|
|
||||||
Alpha: 0.55
|
|
||||||
PaletteFromPaletteWithAlpha@terrainalpha:
|
PaletteFromPaletteWithAlpha@terrainalpha:
|
||||||
BasePalette: terraindecoration
|
BasePalette: terraindecoration
|
||||||
Name: terrainalpha
|
Name: terrainalpha
|
||||||
|
|||||||
Reference in New Issue
Block a user