mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-12-11 13:11:48 +00:00
2c09a443b4
Removed StaticPointerSubstitution in favor of a much safer function that only changes select pointers. As a result the ability to properly modify morphing has been opened back up to ZScript. Many missing virtual callbacks were amended and MorphedDeath has been reworked to only be called back on an actual morphed death. MorphedMonster is no longer required to morph an Actor. CheckUnmorph virtual added that gets called back on morphed Actors. Fixed numerous bugs related to morph behavior.
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;
|
|
}
|
|
|
|
override bool Use (bool pickup)
|
|
{
|
|
Playerinfo p = Owner.player;
|
|
if (p && p.morphTics && (p.MorphStyle & MRF_UNDOBYTOMEOFPOWER))
|
|
{ // Attempt to undo chicken
|
|
if (!p.mo.Unmorph (p.mo, 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;
|
|
}
|
|
|
|
}
|