step 1
make sure your voxel looks right with this palette (8bdm palette)
(https://cdn.discordapp.com/attachments/160882052177199104/679883477147320432/megapal.png)
(https://cdn.discordapp.com/attachments/160882052177199104/679912742840565770/voxel_palette_1.PNG)
step 2
replace that palette with a transformed palette
(https://cdn.discordapp.com/attachments/160882052177199104/679883507111034936/megapalf.png)
(https://cdn.discordapp.com/attachments/160882052177199104/679913025964081183/voxel_palette_2.PNG)
step 3
make sure the actor has translation "0:255=0:255" as default
1. stop it with these ignored first tic actions
Spawn:
AIRS AABBCC 1 ThrustThingZ(0, 2, 0, 1)
loop
should technically be
Spawn:
AIRS A 1
Spawn2:
AIRS ABBCCA 1 ThrustThingZ(0, 2, 0, 1)
loop
because my implementation is
actor AirShot_C : AirShotF replaces AirShot { states { Spawn: TNT1 AA 0 A_GiveInventory("ProjectileCode",1) goto "Super::Spawn" } }
so it would go higher than normal if i didn't do this
actor AirShotF : AirShot
{
States
{
Spawn:
AIRS A 1 //ThrustThingZ(0, 2, 0, 1)
goto "Super::Spawn+1"
}
}
1b. actually this is a better example of that first tic irresponsibility
Spawn:
RUSH D 0 A_Jump(256,"Death")
RUSH D 0 A_ChangeFlag("MISSILE",0)
RUSH D 0 A_ChangeVelocity(0, 0, -32, CVF_REPLACE)
RUSH D 1 A_JumpIf(z-floorz<=0, "Search")
Goto Spawn+2
actor EddieF : Eddie
{
states
{
Spawn:
RUSH D 0 //A_Jump(256,"Death")
goto "Super::Spawn+1"
}
}
EddieF shouldn't exist, but i have to account for that inexplicable A_Jump(256,"Death")
2. include the non blue/cyan spirtes i made in corewepteamcolors, don't have black hole bomb go team colored
if you're not going all in on blue/cyan sprites or projectile team colors, then this just makes my job harder
3. have SXF_TRANSFERTRANSLATION for things spawning clientside fx/trails
GEMI A 0 A_SpawnItemEx("GeminiTrail",0,0,0,0,0,0,0,SXF_TRANSFERTRANSLATION)
without this, i either gotta modify the GeminiLaser or GeminiTrail further for my team colors
and with this, if a dude wanted a class shooting red gemini laser, they could just
actor GeminiLaser2 : GeminiLaser { translation "0:255=227:227" }
done
4. semi-related but, crux of this feature is
actor MegaShot_C : MegaShot replaces MegaShot { states { Spawn: TNT1 AA 0 A_GiveInventory("ProjectileCode",1) goto "Super::Spawn" } }
on every projectile, so i can understand if you don't want to do that
but this on every weapon actor would be so helpful
Spawn:
WEAP Y 0
WEAP Y 0 A_GiveInventory("WeaponSpawnCode",1)
Spawn2:
WEAP Y 1
loop
actor WeaponSpawnCode : CustomInventory
{
states
{
Pickup:
TNT1 A 0
stop
}
}
WeaponSpawnCode would have so much utility
you could spawn minimap icons
you could remove troublesome weapons from certain modes
in cscc or convclasses, they execute custom pickup script