Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
thesecondcomingdoom

Powerup Falling from ground

Recommended Posts

ACTOR Jetpack : Powerup 10004
{
  Powerup.Duration 60
  Inventory.Pickupmessage "JetPack!"
  +INVENTORY.HUBPOWER
  +INVENTORY.ALWAYSPICKUP
  States
  {
  Spawn:
    JETP A 1 bright
    Loop
  }
}
Ok, so here's my little jetpack code, when i try to take it (or summon it) it disappears inmediately, and doesn't give me anything. It seems to fall down the ground.

Share this post


Link to post

That's not how you make powerup pickups. Try this instead:

ACTOR Jetpack : PowerupGiver 10004
{
  Powerup.Type "PowerFlight"
  Powerup.Duration 60
  Inventory.Pickupmessage "JetPack!"
  +INVENTORY.HUBPOWER
  +INVENTORY.ALWAYSPICKUP
  States
  {
  Spawn:
    JETP A -1 bright
    stop
  }
}
The important part is inheriting from "PowerupGiver" instead of "Powerup". Also specifying "Powerup.Type" to an existing powerup type to make it actually give you some powerup when you pick it up.

Share this post


Link to post

ACTOR Jetpack : PowerupGiver 10004
{
  Powerup.Type "PowerFlight"
  Powerup.Duration 600
  Inventory.Pickupmessage "JetPack!"
  inventory.maxamount 0
  +INVENTORY.AUTOACTIVATE
  +INVENTORY.ALWAYSPICKUP
  States
  {
  Spawn:
    JETP A -1 bright
    stop
  }
}

This works pretty fine, but i can't fly for some reason, may anyone explain why?

Share this post


Link to post

My mistake, Powerup.Type should be set to "Flight", not "PowerFlight".

EDIT: However, according to what I read on the PowerupGiver zdoom wiki page, "PowerFlight" should have worked too, so the real issue is probably elsewhere.

Share this post


Link to post
scifista42 said:

My mistake, Powerup.Type should be set to "Flight", not "PowerFlight".

Oh, no problem, also How would i change the player sprite with this?, It's no problem if there's no way, i'd stay like that.

Share this post


Link to post

There are ways, but they're not so simple anymore. Either the pickup must morph the player into a different player class, or you must redefine the default player class and use A_JumpIfInventory trickery to display different sprites based on the presence of PowerFlight in the player's inventory.

Share this post


Link to post
scifista42 said:

There are ways, but they're not so simple anymore. Either the pickup must morph the player into a different player class, or you must redefine the default player class and use A_JumpIfInventory trickery to display different sprites based on the presence of PowerFlight in the player's inventory.

ACTOR PowerFlightJet : Powerup
{
 PowerMorph.PlayerClass "JetpackDoom"
  Powerup.Duration -60
  +INVENTORY.HUBPOWER
}

ACTOR Jetpack : PowerupGiver 10004
{
  Powerup.Type "FlightJet"
  Powerup.Duration 600
  Inventory.Pickupmessage "JetPack!"
  inventory.maxamount 0
  +INVENTORY.AUTOACTIVATE
  +INVENTORY.ALWAYSPICKUP
  States
  {
  Spawn:
    JETP A -1 bright
    stop
  }
}
Would this do the job? Would i need to set something like a new "DoomPlayer" and make it "JetpackDoom" Would that work?

Share this post


Link to post

Your PowerFlightJet must inherit from PowerMorph to be able to morph. Similarly, if you wanted a custom powerup to make the player fly, it must inherit from PowerFlight. You keep declaring actors inheriting directly from the Powerup class, which is wrong. Other than that, OK, it should work, after you properly define the JetpackDoom player class, that is. You may even define the JetpackDoom player class to be able to fly by default, then you wouldn't need the PowerFlight powerup anymore, just the PowerMorph one.

Share this post


Link to post
scifista42 said:

Your PowerFlightJet must inherit from PowerMorph to be able to morph. Similarly, if you wanted a custom powerup to make the player fly, it must inherit from PowerFlight. You keep declaring actors inheriting directly from the Powerup class, which is wrong. Other than that, OK, it should work, after you properly define the JetpackDoom player class, that is. You may even define the JetpackDoom player class to be able to fly by default, then you wouldn't need the PowerFlight powerup anymore, just the PowerMorph one.

ACTOR PowerFlight : Powerup
{
 PowerMorph.PlayerClass "JetpackDoom"
  Powerup.Duration -60
  +INVENTORY.HUBPOWER
}

ACTOR Jetpack : PowerupGiver 10004
{
  Powerup.Type "Flight"
  Powerup.Duration 600
  Inventory.Pickupmessage "JetPack!"
  inventory.maxamount 0
  +INVENTORY.AUTOACTIVATE
  +INVENTORY.ALWAYSPICKUP
  States
  {
  Spawn:
    JETP A -1 bright
    stop
  }
}

ACTOR JetpackDoom : PlayerPawn
{
  Speed 1
  Health 100
  Radius 16
  Height 56
  Mass 100
  PainChance 255
  Player.DisplayName "Jetpack Morphed"
  Player.CrouchSprite "PLYC"
  Player.StartItem "Pistol"
  Player.StartItem "Fist"
  Player.StartItem "Clip", 50
  Player.WeaponSlot 1, Fist, Chainsaw
  Player.WeaponSlot 2, Pistol
  Player.WeaponSlot 3, Shotgun, SuperShotgun
  Player.WeaponSlot 4, Chaingun
  Player.WeaponSlot 5, RocketLauncher
  Player.WeaponSlot 6, PlasmaRifle
  Player.WeaponSlot 7, BFG9000
  Player.ColorRange 112, 127
  Player.ColorSet 0, "Green",         0x70, 0x7F,  0x72
  Player.ColorSet 1, "Gray",          0x60, 0x6F,  0x62 // Called "Indigo" originally so as to have a unique initial
  Player.ColorSet 2, "Brown",         0x40, 0x4F,  0x42
  Player.ColorSet 3, "Red",           0x20, 0x2F,  0x22
  // Doom Legacy additions
  Player.ColorSet 4, "Light Gray",    0x58, 0x67,  0x5A
  Player.ColorSet 5, "Light Brown",   0x38, 0x47,  0x3A
  Player.ColorSet 6, "Light Red",     0xB0, 0xBF,  0xB2
  Player.ColorSet 7, "Light Blue",    0xC0, 0xCF,  0xC2

  States
  {
  Spawn:
    PLAY A -1
    Loop
  See:
    PLAY ABCD 4 
    Loop
  Missile:
    PLAY E 12
    Goto Spawn
  Melee:
    PLAY F 6 BRIGHT
    Goto Missile
  Pain:
    PLAY G 4 
    PLAY G 4 A_Pain
    Goto Spawn
  Death:
    PLAY H 0 A_PlayerSkinCheck("AltSkinDeath")
  Death1:
    PLAY H 10
    PLAY I 10 A_PlayerScream
    PLAY J 10 A_NoBlocking
    PLAY KLM 10
    PLAY N -1
    Stop
  XDeath:
    PLAY O 0 A_PlayerSkinCheck("AltSkinXDeath")
  XDeath1:
    PLAY O 5
    PLAY P 5 A_XScream
    PLAY Q 5 A_NoBlocking
    PLAY RSTUV 5
    PLAY W -1
    Stop
  AltSkinDeath:
    PLAY H 6
    PLAY I 6 A_PlayerScream
    PLAY JK 6
    PLAY L 6 A_NoBlocking
    PLAY MNO 6
    PLAY P -1
    Stop
  AltSkinXDeath:
    PLAY Q 5 A_PlayerScream
    PLAY R 0 A_NoBlocking
    PLAY R 5 A_SkullPop
    PLAY STUVWX 5
    PLAY Y -1
    Stop
  }
}
Sorry if this code is really long.

I get this in GZdoom

Execution could not continue.

Script error, "cooldoomremastered.wad:DECORATE" line 1069:
Unexpected 'JetpackDoom' in definition of 'PowerFlight'

Share this post


Link to post
thesecondcomingdoom said:

ACTOR PowerFlight : Powerup
{
 PowerMorph.PlayerClass "JetpackDoom"
  Powerup.Duration -60
  +INVENTORY.HUBPOWER
}

No, no, no. You shouldn't just overwrite an existing actor (PowerFlight) by your own definition of it, let alone one with native special behavior.

This is how I meant you should do it:

ACTOR PowerJet : PowerMorph
{
 PowerMorph.PlayerClass "JetpackDoom"
  Powerup.Duration -60
  +INVENTORY.HUBPOWER
}
ACTOR Jetpack : PowerupGiver 10004
{
  Powerup.Type "PowerJet" // or "Jet", whatever works
  ...
PowerJet must have a unique name (like every newly defined actor) and must inherit from PowerMorph (to gain the ability to morph the player).

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×