mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-15 00:41:57 +00:00
3d61d2c1f4
Nothing should ever assume that spawning an actor is unconditionally successful. There can always be some edge cases where this is not the case.
156 lines
2.6 KiB
Text
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;
|
|
}
|
|
|
|
bool Use (bool pickup)
|
|
{
|
|
Playerinfo p = Owner.player;
|
|
if (p && p.morphTics && (p.MorphStyle & MRF_UNDOBYTOMEOFPOWER))
|
|
{ // Attempt to undo chicken
|
|
if (!p.UndoPlayerMorph (p, MRF_UNDOBYTOMEOFPOWER))
|
|
{ // Failed
|
|
if (!(p.MorphStyle & MRF_FAILNOTELEFRAG))
|
|
{
|
|
Owner.DamageMobj (null, null, TELEFRAG_DAMAGE, 'Telefrag');
|
|
}
|
|
}
|
|
else
|
|
{ // Succeeded
|
|
Owner.A_PlaySound ("*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;
|
|
}
|
|
|
|
}
|