mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-30 15:52:09 +00:00
59 lines
1.2 KiB
Text
59 lines
1.2 KiB
Text
|
|
// Teleport (self) ----------------------------------------------------------
|
|
|
|
class ArtiTeleport : Inventory
|
|
{
|
|
Default
|
|
{
|
|
+COUNTITEM
|
|
+FLOATBOB
|
|
+INVENTORY.INVBAR
|
|
Inventory.PickupFlash "PickupFlash";
|
|
+INVENTORY.FANCYPICKUPSOUND
|
|
Inventory.DefMaxAmount;
|
|
Inventory.Icon "ARTIATLP";
|
|
Inventory.PickupSound "misc/p_pkup";
|
|
Inventory.PickupMessage "$TXT_ARTITELEPORT";
|
|
Tag "$TAG_ARTITELEPORT";
|
|
}
|
|
States
|
|
{
|
|
Spawn:
|
|
ATLP ABCB 4;
|
|
Loop;
|
|
}
|
|
|
|
override bool Use (bool pickup)
|
|
{
|
|
Vector3 dest;
|
|
int destAngle;
|
|
|
|
if (deathmatch)
|
|
{
|
|
[dest, destAngle] = level.PickDeathmatchStart();
|
|
}
|
|
else
|
|
{
|
|
[dest, destAngle] = level.PickPlayerStart(Owner.PlayerNumber());
|
|
}
|
|
dest.Z = ONFLOORZ;
|
|
Owner.Teleport (dest, destAngle, TELF_SOURCEFOG | TELF_DESTFOG);
|
|
bool canlaugh = true;
|
|
Playerinfo p = Owner.player;
|
|
if (p && p.morphTics && (p.MorphStyle & MRF_UNDOBYCHAOSDEVICE))
|
|
{ // Teleporting away will undo any morph effects (pig)
|
|
if (!p.mo.UndoPlayerMorph (p, MRF_UNDOBYCHAOSDEVICE) && (p.MorphStyle & MRF_FAILNOLAUGH))
|
|
{
|
|
canlaugh = false;
|
|
}
|
|
}
|
|
if (canlaugh)
|
|
{ // Full volume laugh
|
|
Owner.A_PlaySound ("*evillaugh", CHAN_VOICE, 1, false, ATTN_NONE);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
}
|
|
|
|
|