gzdoom/wadsrc/static/zscript/actors/heretic/hereticartifacts.zs

156 lines
2.6 KiB
Text

// Super map ----------------------------------------------------------------
Class SuperMap : MapRevealer
{
Default
{
+COUNTITEM
+INVENTORY.ALWAYSPICKUP
+FLOATBOB
Inventory.MaxAmount 0;
Inventory.PickupMessage "$TXT_ITEMSUPERMAP";
}
States
{
Spawn:
SPMP A -1;
Stop;
}
}
// Invisibility -------------------------------------------------------------
Class ArtiInvisibility : PowerupGiver
{
Default
{
+COUNTITEM
+FLOATBOB
Inventory.PickupFlash "PickupFlash";
RenderStyle "Translucent";
Alpha 0.4;
Inventory.RespawnTics 4230;
Inventory.Icon "ARTIINVS";
Powerup.Type "PowerGhost";
Inventory.PickupMessage "$TXT_ARTIINVISIBILITY";
Tag "$TAG_ARTIINVISIBILITY";
}
States
{
Spawn:
INVS A 350 Bright;
Loop;
}
}
// Tome of power ------------------------------------------------------------
Class ArtiTomeOfPower : PowerupGiver
{
Default
{
+COUNTITEM
+FLOATBOB
Inventory.PickupFlash "PickupFlash";
Inventory.Icon "ARTIPWBK";
Powerup.Type "PowerWeaponlevel2";
Inventory.PickupMessage "$TXT_ARTITOMEOFPOWER";
Tag "$TAG_ARTITOMEOFPOWER";
}
States
{
Spawn:
PWBK A 350;
Loop;
}
override bool Use (bool pickup)
{
Playerinfo p = Owner.player;
if (p && p.morphTics && (p.MorphStyle & MRF_UNDOBYTOMEOFPOWER))
{ // Attempt to undo chicken
if (!p.mo.UndoPlayerMorph (p, MRF_UNDOBYTOMEOFPOWER))
{ // Failed
if (!(p.MorphStyle & MRF_FAILNOTELEFRAG))
{
Owner.DamageMobj (null, null, TELEFRAG_DAMAGE, 'Telefrag');
}
}
else
{ // Succeeded
Owner.A_StartSound ("*evillaugh", CHAN_VOICE);
}
return true;
}
else
{
return Super.Use (pickup);
}
}
}
// Time bomb ----------------------------------------------------------------
Class ActivatedTimeBomb : Actor
{
Default
{
+NOGRAVITY
RenderStyle "Translucent";
Alpha 0.4;
DeathSound "misc/timebomb";
}
States
{
Spawn:
FBMB ABCD 10;
FBMB E 6 A_Scream;
XPL1 A 4 BRIGHT A_Timebomb;
XPL1 BCDEF 4 BRIGHT;
Stop;
}
void A_TimeBomb()
{
AddZ(32, false);
A_SetRenderStyle(1., STYLE_Add);
A_Explode();
}
}
Class ArtiTimeBomb : Inventory
{
Default
{
+COUNTITEM
+FLOATBOB
Inventory.PickupFlash "PickupFlash";
+INVENTORY.INVBAR
+INVENTORY.FANCYPICKUPSOUND
Inventory.Icon "ARTIFBMB";
Inventory.PickupSound "misc/p_pkup";
Inventory.PickupMessage "$TXT_ARTIFIREBOMB";
Tag "$TAG_ARTIFIREBOMB";
Inventory.DefMaxAmount;
}
States
{
Spawn:
FBMB E 350;
Loop;
}
override bool Use (bool pickup)
{
Actor mo = Spawn("ActivatedTimeBomb", Owner.Vec3Angle(24., Owner.angle, - Owner.Floorclip), ALLOW_REPLACE);
if (mo != null) mo.target = Owner;
return true;
}
}