-
Notifications
You must be signed in to change notification settings - Fork 316
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add T3 Shields "Asylum" and "Sanctuary" (#4104)
![image](https://github.com/user-attachments/assets/25a94ff3-18a3-4bff-bf85-79308957fa9a) Thanks to Protar for his modeling genius Adds t3 shields Armada "Conservator" and the Cortex "Overlord" to the extra units pack. **Hides modoption to override default shield behavior.** Sanctuary: roughly 5 times as powerful and 5 times as costly as a normal cortex shield with +275 range. blocks/deflects (depending on rework) all weapons except: - large starburst missiles - aircraft bombs - lightening - (until merge of my other [shield re-rework pr](#4077) ) flames Asylum: roughly 4 times as powerful and 4 times as costly as normal armada shield. +160 range. blocks/deflects (depending on rework) all weapons except: - large starburst missiles - aircraft bombs - flames Legion is given access to the Conservator until their t2 and t3 shields are complete. the opacity of the shields is a little stronger than their t2 counterparts. I'd like to change the tint but that isn't supported in the unitdefs and I wasn't able to figure out how to change it in the fx **testing steps** - enable extra units pack, - you should now see build options for the t3 shields - build them - test all projectiles, note the above exclusions - you can spawn them with `corgatet3` and `armgatet3` *inversely* - ensure nothing changes in vanilla game when extra units isn't enabled Q/A **But WHY?** The general sentiment is we need fewer modoptions. Removing shield behavior overrides will cause riots without sweetening the deal a bit. This is that sugar, baby. **Porc bad!** Extra units is almost exclusively used for PVE games. In PVE, the AI doesn't really care if you're Porc'ing, and weak shields make porc hard in some of the more crazy game modes. **Why the exceptions to specific projectiles?!** So the shields aren't without counterplay. Starburst-style missiles and bombing runs are a deliberate choice. Flames/lightening is for faction flavor. Small missiles are blocked because of the catapult and because there exist many general assault rocketbots that would otherwise effortlessly demolish defenses in scavengers gamemode.
- Loading branch information
1 parent
d6aac4d
commit 6a40949
Showing
19 changed files
with
729 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,148 @@ | ||
#define TA // This is a TA script | ||
|
||
#include "sfxtype.h" | ||
#include "exptype.h" | ||
|
||
piece base, shield; | ||
|
||
static-var Static_Var_1, statechg_DesiredState, statechg_StateChanging; | ||
|
||
|
||
ShieldOn() | ||
{ | ||
Static_Var_1 = 1; | ||
} | ||
|
||
ShieldOff() | ||
{ | ||
Static_Var_1 = 0; | ||
} | ||
|
||
InitState() | ||
{ | ||
statechg_DesiredState = TRUE; | ||
statechg_StateChanging = FALSE; | ||
} | ||
|
||
RequestState(requestedstate, currentstate) | ||
{ | ||
if( statechg_StateChanging ) | ||
{ | ||
statechg_DesiredState = requestedstate; | ||
return (0); | ||
} | ||
statechg_StateChanging = TRUE; | ||
currentstate = statechg_DesiredState; | ||
statechg_DesiredState = requestedstate; | ||
while( statechg_DesiredState != currentstate ) | ||
{ | ||
if( statechg_DesiredState == 0 ) | ||
{ | ||
call-script ShieldOn(); | ||
currentstate = 0; | ||
} | ||
if( statechg_DesiredState == 1 ) | ||
{ | ||
call-script ShieldOff(); | ||
currentstate = 1; | ||
} | ||
} | ||
statechg_StateChanging = FALSE; | ||
} | ||
|
||
Create() | ||
{ | ||
hide shield; | ||
|
||
Static_Var_1 = 1; | ||
call-script InitState(); | ||
} | ||
|
||
#define SMOKEPIECE base | ||
#include "smokeunit_thread_nohit.h" | ||
|
||
Activate() | ||
{ | ||
start-script RequestState(0); | ||
} | ||
|
||
Deactivate() | ||
{ | ||
start-script RequestState(1); | ||
} | ||
|
||
AimPrimary(heading, pitch) | ||
{ | ||
sleep 100; | ||
return (Static_Var_1); | ||
} | ||
|
||
FirePrimary() | ||
{ | ||
sleep 100; | ||
} | ||
|
||
QueryPrimary(piecenum) | ||
{ | ||
piecenum = shield; | ||
} | ||
|
||
AimFromPrimary(piecenum) | ||
{ | ||
piecenum = base; | ||
} | ||
|
||
AimSecondary(heading, pitch) | ||
{ | ||
sleep 100; | ||
return (Static_Var_1); | ||
} | ||
|
||
FireSecondary() | ||
{ | ||
sleep 100; | ||
} | ||
|
||
QuerySecondary(piecenum) | ||
{ | ||
piecenum = base; | ||
} | ||
|
||
AimFromSecondary(piecenum) | ||
{ | ||
piecenum = base; | ||
} | ||
|
||
SweetSpot(piecenum) | ||
{ | ||
piecenum = base; | ||
} | ||
|
||
Killed(severity, corpsetype) | ||
{ | ||
if( severity <= 25 ) | ||
{ | ||
corpsetype = 1 ; | ||
explode base type BITMAPONLY | NOHEATCLOUD; | ||
explode shield type BITMAPONLY | NOHEATCLOUD; | ||
return(corpsetype); | ||
} | ||
if( severity <= 50 ) | ||
{ | ||
corpsetype = 2 ; | ||
explode base type BITMAPONLY | NOHEATCLOUD; | ||
explode shield type FIRE | SMOKE | FALL | NOHEATCLOUD; | ||
return(corpsetype); | ||
} | ||
if( severity <= 99 ) | ||
{ | ||
corpsetype = 3 ; | ||
explode base type BITMAPONLY | NOHEATCLOUD; | ||
explode shield type EXPLODE_ON_HIT | SMOKE | FALL | NOHEATCLOUD; | ||
return(corpsetype); | ||
} | ||
corpsetype = 3 ; | ||
explode base type BITMAPONLY | NOHEATCLOUD; | ||
explode shield type EXPLODE_ON_HIT | FIRE | FALL | NOHEATCLOUD; | ||
return corpsetype; | ||
} |
Binary file not shown.
Oops, something went wrong.