diff --git a/default.cbd b/default.cbd index db340a4a4..45ef935a3 100644 --- a/default.cbd +++ b/default.cbd @@ -176,17 +176,17 @@ ${COMPILER} "autostart.cpp a.nas blocks.nas misc.nas tmap.nas tmap2.nas tmap3.na a_heresiarch.cpp \ a_hexenspecialdecs.cpp a_iceguy.cpp a_korax.cpp a_mageboss.cpp a_magecone.cpp \ a_magelightning.cpp a_mageplayer.cpp a_magestaff.cpp a_magewand.cpp a_mana.cpp \ - a_pig.cpp a_puzzleitems.cpp a_scriptprojectiles.cpp a_serpent.cpp \ + a_pig.cpp a_puzzleitems.cpp a_serpent.cpp \ a_spike.cpp a_summon.cpp a_teleportother.cpp a_weaponpieces.cpp a_wraith.cpp \ hexen_sbar.cpp a_artiegg.cpp a_artitele.cpp a_minotaur.cpp a_ravenambient.cpp \ a_acolyte.cpp a_alienspectres.cpp \ - a_beggars.cpp a_coin.cpp a_crusader.cpp a_entityboss.cpp a_inquisitor.cpp \ - a_loremaster.cpp a_macil.cpp a_merchants.cpp a_oracle.cpp a_peasant.cpp \ - a_programmer.cpp a_questitems.cpp a_ratbuddy.cpp a_reaver.cpp a_rebels.cpp \ - a_sentinel.cpp a_spectral.cpp a_stalker.cpp a_strifeammo.cpp a_strifearmor.cpp \ - a_strifebishop.cpp a_strifeitems.cpp a_strifekeys.cpp a_strifeplayer.cpp \ + a_coin.cpp a_crusader.cpp a_entityboss.cpp a_inquisitor.cpp \ + a_loremaster.cpp a_macil.cpp a_oracle.cpp \ + a_programmer.cpp a_reaver.cpp a_rebels.cpp \ + a_sentinel.cpp a_spectral.cpp a_stalker.cpp a_strifeammo.cpp \ + a_strifebishop.cpp a_strifeitems.cpp a_strifeplayer.cpp \ a_strifestuff.cpp a_strifeweapons.cpp a_templar.cpp a_thingstoblowup.cpp \ - a_zombie.cpp strife_sbar.cpp a_action.cpp a_artifacts.cpp a_bridge.cpp \ + strife_sbar.cpp a_action.cpp a_artifacts.cpp a_bridge.cpp \ a_camera.cpp a_debris.cpp a_decals.cpp a_flashfader.cpp a_fountain.cpp \ a_hatetarget.cpp a_keys.cpp a_lightning.cpp a_movingcamera.cpp a_pickups.cpp \ a_quake.cpp a_secrettrigger.cpp a_sectoraction.cpp a_sharedmisc.cpp a_skies.cpp \ diff --git a/docs/rh-log.txt b/docs/rh-log.txt index 5300b3889..c77232543 100644 --- a/docs/rh-log.txt +++ b/docs/rh-log.txt @@ -18,6 +18,45 @@ May 6, 2006 This could also have been used to fix FName, but I consider the current implementation to be better than the old one, so I'm leaving it as-is. +May 6, 2006 (Changes by Graf Zahl) +- Converted a_zombie.cpp and most of a_strifestuff.cpp to DECORATE. +- Converted a_strifekeys.cpp to DECORATE and moved the pickup messages to the + string table. +- Removed the WIF_HITS_GHOSTS weapon flag and replaced it with MF2_THRUGHOST. + There is no need to keep two flags around with virtually the same meaning. +- Changed the ShadowArmor to use the VISIBILITYPULSE flag to change its translucency. + It looks much better now than the cheap code pointer based blinking it used before. +- Converted most of a_strifeitems.cpp to DECORATE and moved the pickup messages + to the string table. +- Converted a_strifearmor.cpp to DECORATE and moved the pickup messages to the + string table. +- Moved the messages for killing spectres to the string table. +- Converted the quest items to DECORATE. Also changed A_GiveQuestItem to get + the messages it prints from the string table instead of the quest item's tag + string. + +May 5, 2006 (Changes by Graf Zahl) +- Removed the hopelessly outdated thingdef_doc.txt file from the repository. +- Converted a_peasant.cpp and a_ratbuddy.cpp to DECORATE. +- Fixed: C_DoKey didn't treat an empty string as 'no binding' when checking for + valid double bindings. +- Converted a_merchants.cpp to DECORATE. +- Added MF5_NODAMAGE flag to generalize the behavior of Strife's merchants which + can be shot but take no damage from getting hurt. +- Converted a_beggars.cpp to DECORATE. +- Added an Inventory.GiveQuest property. This makes it possible to define all of + Strife's original items that also give a quest item in DECORATE but it is also + useful to define items like the ones in Day of the Acolyte without ugly workarounds. +- Added a Tag property and Strife teaser conversation IDs to DECORATE so now it is + possible to define many of Strife's items. +- Added a FastSpeed property to DECORATE so that projectiles can finally be + assigned a higher speed for fast mode. +- Added a ACS_LockedExecuteDoor special. It is basically the same as the existing + ACS_LockedExecute but it uses the 'door' message instead of 'remote'. This + cannot be integrated into ACS_LockedExecute because all its arguments are already + in use. +- Added a fully customizable A_CustomMeleeAttack function for DECORATE. + May 5, 2006 - Fixed: Scanned IWAD paths were not freed if you exited without selecting one. - Fixed: Dynamically allocated cvars were not freed on exit. @@ -40,6 +79,8 @@ May 4, 2006 were missing game filters. May 4, 2006 (Changes by Graf Zahl) +- Added Poisondamage property for DECORATE. I first did this for one of the first + DECORATE updates but the code seems to have gotten lost. - Converted A_Puzzleitems.cpp and parts of A_HexenSpecialdecs.cpp to DECORATE. - Converted A_Hexendecorations.cpp to DECORATE. - Changed the lower decal spawning code to transfer the main decal's color if @@ -439,7 +480,7 @@ April 13, 2006 (Changes by Graf Zahl) - Added checks for sectors without lines to all Find* functions in p_sector.cpp - Fixed: Dehacked patches weren't loaded when not playing Doom. - Fixed: Thing_Remove must not remove living players from the map. -- Fixed: Using $MAP in SNDINFO overrides music definitions in MAPINFO. This +- Fixed: Using $MAP in SNDINFO overrode music definitions in MAPINFO. This made it impossible to define music in MAPINFO for Hexen. - Fixed: Resurrecting a morphed player must first restore the unmorphed version. @@ -534,7 +575,7 @@ April 11, 2006 (Changes by Graf Zahl) - Fixed: Strife's dialogs don't give weapons to the player he already has. - Fixed: The INDIANA cheat in Hexen gives 25 of each item, not just 1. - Fixed: The stair builder's compatibility mode must do a linear search - for sectors. Searching the hasch chain doesn't work here. + for sectors. Searching the hash chain doesn't work here. - Fixed: Any monster with a TakeSpecialDamage method should call the super class's method instead of simply returning the damage amount. - Fixed: Hexen's mash monsters cannot be frozen. No matter how you kill diff --git a/docs/thingdef_doc.txt b/docs/thingdef_doc.txt deleted file mode 100644 index eb01ab5c6..000000000 --- a/docs/thingdef_doc.txt +++ /dev/null @@ -1,597 +0,0 @@ - - -Examples for actor definitions ------------------------------- - -1) a complete definition from scratch: - -ACTOR ZombieMan 3004 -{ - Health 20 - Radius 20 - Height 56 - Speed 8 - PainChance 200 - MONSTER - +FLOORCLIP - SeeSound grunt/sight - AttackSound grunt/attack - PainSound grunt/pain - DeathSound grunt/death - ActiveSound grunt/active - Obituary "%o was killed by a zombieman." - DropItem Clip - Damage 4 - States - { - Spawn: - POSS AB 10 A_Look - Loop - See: - POSS AABBCCDD 4 A_Chase - Loop - Missile: - POSS E 10 A_FaceTarget - POSS F 8 A_BulletAttack - POSS E 8 - Goto See - Pain: - POSS G 3 - POSS G 3 A_Pain - Goto See - Death: - POSS H 5 - POSS I 5 A_Scream - POSS J 5 A_Fall - POSS K 5 - POSS L -1 - Stop - XDeath: - POSS M 5 - POSS N 5 A_XScream - POSS O 5 A_Fall - POSS PQRST 5 - POSS U -1 - Stop - Raise: - POSS KJIH 5 - Goto See - } -} - - -2) an actor which inherits from an existing one: - - -ACTOR PlasmaZombie : ZombieMan 9600 -{ - Health 40 - DropItem Cell - MissileType PlasmaBall - States - { - Missile: - POSS E 10 A_FaceTarget - POSS F 5 A_MissileAttack - POSS E 5 A_FaceTarget - POSS F 5 A_MissileAttack - POSS E 5 A_FaceTarget - POSS F 5 A_MissileAttack - Goto See - } -} - -(this is a zombie which fires 3 plasma bullets when attacking) - - -3) an actor which uses SKIP_SUPER - -ACTOR DeadZombieMan : ZombieMan 18 -{ - SKIP_SUPER - Spawn Parent Death+4 -} - -(this actor doesn't inherit anything from its parent - it just uses - some of its states.) - - -Syntax: -------- - -ACTOR classname [ : parentclassname] [doomednum] -{ - properties - flags - ... -} - -classname: The name this new actor is referenced by in the game -parentclassname: (optional) The name of a parent class this new actor - inherits its attributes from. -doomednum: Editor number for this actor (optional) - - -List of properties: -=================== - -SKIP_SUPER reinitializes the actor as if it has no parent - This can be used to have access to the parent's - states without inheriting its attributes. See - 3) above for an example. -SPAWNID value defines the spawn ID to be used with Thing_Spawn - and its derivates. -HEALTH value defines the health a monster starts with - Default is 1000 -REACTIONTIME value Time in tics (1/35 seconds) a monster needs - to attack back. There is normally no need to - change this value. - Default is 8 -PAINCHANCE value Probability of entering the pain state. - 255=always, 0=never - Default is 0 -DAMAGE value For a projectile defines the damage it inflicts - upon impact. The formula is random(1,8)*damage - or (random(1,4)*damage if STRIFEDAMAGE is set. - This also defines the damage for actors which - attack like the Lost Soul. The formula for this - is random(1,8)*damage. - DAMAGE is also used to define how many bullets - are fired by the generic hitscan attack function - A_Bulletattack. - Default is 0 -SPEED value Defines how fast an actor moves. For projectiles - this is the distance it moves. For monsters it - defines the size of one step done in A_Chase. - Default is 0. -RADIUS value Defines the radius of this actor. - Default is 20. -HEIGHT value Defines the height of this actor - Default is 16. -MASS value Defines the mass of this actor. - The larger the mass the less an actor moves when - being thrust by damage. - Default is 100. -XSCALE value Defines the X-scaling for this actor. - Range is [0.0, 4.0]. - Default is 1.0 -YSCALE value Defines the Y-scaling for this actor. - Range is [0.0, 4.0]. - Default is 1.0 -SCALE value Combines XScale and YScale - Range is [0.0, 4.0]. - Default is 1.0 -SEESOUND name Defines the sound the actor makes when it sees - the player (for monsters) or when a projectile - is spawned. -ATTACKSOUND name Defines the sound the actor makes when attacking. -PAINSOUND name Defines the sound the actor makes when in pain. - To hear this sound A_Pain has to be called. -DEATHSOUND name Defines the sound the actor makes when dying - or when a projectile explodes. -ACTIVESOUND name Defines the sound the actor makes when active. -MELEESOUND name Defines the sound the actor makes when doing - a melee attack in A_MeleeAttack. Note that - several original attack functions which have - such a sound use a hard coded reference (e.g. - A_TroopAttack uses imp/melee) -RENDERSTYLE type Defines how this actor is rendered. Useful values are: - NONE - actor is invisible - NORMAL - actor is visible and not translucent - FUZZY - like the Spectre in Doom - TRANSLUCENT - actor is translucent. - ADD - actor uses additive translucency. - Default is NORMAL -ALPHA value defines the opacity/intensity for render styles - TRANSLUCENT and ADD. - Range is [0.0, 1.0] - Default is 1.0 -DEATHHEIGHT value Defines the height this actor has after dying. - Default is 1/4 of the original height -BURNHEIGHT value Defines the height this actor has after dying by fire. - Default is 1/4 of the original height -*OBITUARY string Defines the obituary string for this actor. This string - uses a few placeholders: - %o: victim's name - %k: killer's name - %g: he/she/it - %h: him/her/it - %p: his/her/its -*HITOBITUARY string Defines the obituary string for a melee attack by this - actor. If not present OBITUARY is used. The same format - as for OBITUARY appplies. -*DONTHURTSHOOTER If this actor deals explosive damage and is a projectile - it does not hurt the shooter. -*EXPLOSIONRADIUS value Defines the radius of explosive damage - Default is 128 -*EXPLOSIONDAMAGE value Defines the amount of explosive damage - Default is 128 -MELEEDAMAGE value Defines the amount of damage this monste will inflict - when using A_MeleeAttack. The formula is random(1,8)*damage. -MISSILETYPE name Defines the projectile type this monster is firing when - using A_MissileAttack. Any valid projectile present in the - game can be specified. -MISSILEHEIGHT value Defines the height at which the projectile is spawned. - Default is 32. -MONSTER Sets all appropriate flags to make this actor act as a regular - monster. The following flags are being set: - SHOOTABLE, COUNTKILL, SOLID, CANPUSHWALLS, ACTIVATEMCROSS, CANPASS, ISMONSTER. -PROJECTILE Sets all appropriate flags to make this actor act as a regular - projectile. The following flags are being set: - NOBLOCKMAP, NOGRAVITY, DROPOFF, MISSILE, ACTIVATEIMPACT, ACTIVATEPCROSS, NOTELEPORT. -CLEARFLAGS clears all flags -*DROPITEM name [probability [amount]] - Drops an item of type 'name' when dying. Optionally the probability - can be specified. A probability of 255 means the item is always dropped, - a probability of 0 means it is never dropped. - amount is only applicable for Heretic ammuniton. It specifies how much - ammo the dropped item contains. - There can be more than one DROPITEM definitions for an actor. The - amount is unlimited. - DROPITEM works differently with inherited actors. An actor can inherit - a list of DROPITEM definitions from its parent but if it defines one - of its own the entire parent's list is discarded. -SPAWN -SEE -MELEE -MISSILE -PAIN -DEATH -XDEATH -BURN -ICE -RAISE -CRASH With these keywords a specific state in the actor can be either cleared - or set to one of the parent's states. The syntax is: - SPAWN 0 to clear a state or - SPAWN PARENT DEATH[+offset] to set a parent's state. See 3) above for an - example - -STATES Defines an actor's states. See the separate block STATES for more information - - -Properties prefixed with a '*' cannot be inherited from predefined actors due to the -implementation. - - -List of flags -============= - - -Flags are special properties that can be either set or cleared -+flagname sets a flag --flagname clears a flag - -The following flags exist. If applicable the name is identical with the one used -in regular DECORATE items. - -SOLID set when the object should be solid (blocking) -SHOOTABLE object can be damaged. If health goes below 0 it dies -NOSECTOR Object is not linked into the sector. This makes it invisible - and excludes it from certain physics checks. -NOBLOCKMAP This object is excluded from passive collision detection. Nothing else - can run into a NOBLOCKMAP object but the object itself can run - into others. All projectiles have this set. -AMBUSH Monster is 'deaf'. Normally this is set in an editor on a per- - object basis. -JUSTHIT try to attack right back (used in monster AI, probably not - particularly useful in actor definitions) -JUSTATTACKED take at least one step before attacking -SPAWNCEILING spawned hanging from the ceiling as opposed to standing on the - floor. -NOGRAVITY Actor is not subject to gravity -DROPOFF Monster can walk over ledges/taller steps. -NOCLIP Actor is totally excluded from collision detection and - can walk through walls etc. -FLOAT Floating monster - can change height at will. -TELEPORT Although implemented there isn't a single actor which - uses this flag. I can't say what it does precisely but - it excludes an actor that has it set from certain parts - of the collision detection logic. -MISSILE Actor is a projectile. -SHADOW Actor is nearly invisible. Unlike regular Doom this does - not automatically imply fuzziness. For that you have to - specify RenderStyle Fuzzy. -NOBLOOD Actor does not bleed when hurt. -CORPSE Actor is a corpse. For normal actors there is no need to - set this but in combination with the crashstate it might - be useful. -COUNTKILL Counts toward kill percentage -COUNTITEM Counts toward item percentage -NOTDMATCH Is not being spawned in Deathmatch games. -NOLIFTDROP Does not drop when a lift under it lowers -STEALTH Stealth monster -ICECORPSE Actor is a frozen corpse -LOWGRAVITY Actor is subject to low gravity -WINDTHRUST Actor is thrust by the Heretic wind specials. I hope its - functionality is some day expanded to the Boom wind specials -HERETICBOUNCE Heretic style bouncing (objects only bounce off the floor) -HEXENBOUNCE Hexen style bouncing (objects bounce off floors and walls) -DOOMBOUNCE ZDoom style bouncing (like hexen but stops when losing a certain - amount of momentum) - The 3 bounce types are mutually exclusive -FLOORCLIP Actor's lower part is clipped when standing in a sector - with a liquid texture (defined in the TERRAIN lump) -SPAWNFLOAT Actor is spawned hat a random height in the sector. -NOTELEPORT Actor cannot teleport -RIPPER For projectiles that can rip through monsters and players. -PUSHABLE Actor can be pushed. -SLIDESONWALLS Actor can slide along walls -CANPASS Actor uses height sensitive collision detection. Use with care! - This only makes sense on actors that can move by themselves. -CANNOTPUSH This actor cannot push pushable objects. -THRUGHOST This actor passes through ghosts (set with the GHOST flag.) -BOSS Actor is a boss. Bosses have a few special properties - (like playing some sounds at full volume.) -FIREDAMAGE Actor inflicts fire damage. -ICEDAMAGE Actor inflicts ice damage. -NODAMAGETHRUST Upon hitting another actor the victim is not thrust when damaged. -TELESTOMP This actor can telefrag others. -FLOATBOB use float bobbing z movement like Heretic/Hexen's powerups -ACTIVATEIMPACT Upon hitting a wall this actor can activate G1/GR lines -CANPUSHWALLS Upon hitting a wall this actor can activate P1/PR lines -ACTIVATEMCROSS This actor can activate 'Monster crosses' lines. -ACTIVATEPCROSS This actor can activate 'Projectile crosses' lines. -CANTLEAVEFLOORPIC This actor cannot cross into a sector with a different floor - texture. -NONSHOOTABLE Actor cannot be hit (projectiles pass through.) -INVULNERABLE Actor cannot be hurt. -DORMANT Actor is dormant and has to be activated with Thing_Activate. -SEEKERMISSILE Actor is a homing missile. This is only used as a hint to the - game. For a homing missile to be effective it has to use - one of the seeker missile code pointers in its moving states. -REFLECTIVE Actor reflects missiles shot at it. -FLOORHUGGER defines a projectile that is moving along the floor. -CEILINGHUGGER defines a projectile that is moving along the ceiling. -NORADIUSDMG Actor cannot be hurt by radius (explosive) damage. -GHOST Actor is a ghost. This does not imply translucency etc. -DONTSPLASH Actor does not create any terrain splashes -DONTOVERLAP Two actors with this flag cannot overlap at the same x/y-position - but different heights -DONTMORPH Cannot be morphed into a chicken or pig. -DONTSQUASH This actor cannot be instantly killed by Heretic's powered up Mace. -FULLVOLACTIVE Plays its active sound at full volume -ISMONSTER Actor is a monster -SKYEXPLODE Projectile explodes when hitting a sky instead of vanishing -STAYMORPHED If morphed this actor cannot revert to its original form. -DONTBLAST Cannot be blasted by Hexen's Disc of Repulsion. -CANBLAST Can be blasted by Hexen's Disc of Repulsion. For monsters this is - implicit. -NOTARGET cannot be targeted by other monsters. -DONTGIB cannot be crushed to a pile of blood. -NOBLOCKMONST can walk through monster blocking lines. -FULLVOLDEATH Plays its death sound at full volume -CANBOUNCEWATER Can bounce on water. Normally an object is destroyed in this case. -NOWALLBOUNCESND Does not play a sound when bouncing off a wall. Normally the - Seesound is played in this case. -FOILINVUL Can hurt invulnerable monsters (but not players.) -NOTELEOTHER Cannot be teleported by Hexen's banishment device. -QUICKTORETALIATE Immediately switches targets when being attacked. -NOICEDEATH Monster cannot be frozen, used to prevent the generic ice death. -RANDOMIZE Randomizes the duration for its first frame. Most of Doom's projectiles - use this. -FIXMAPTHINGPOS Move thing out of walls. For torches and similar things that tend to be - placed directly on a wall. -ACTLIKEBRIDGE Uses the special collision logic for bridge things. -STRIFEDAMAGE Strife uses a different damage calculation for its projectiles. - - -States (a.k.a. Frames) -====================== - -States define the behavior of an actor. For any regular actor there are the following -labels: - -SPAWN defines the state that is displayed when an actor is spawned - For monsters this is normally also the idle loop. -SEE defines the walking animation for a monster. -MELEE defines the melee (near) attack. -MISSILE defines the missile (far) attack. -PAIN defines the pain action -DEATH defines the normal death sequence -XDEATH defines the extreme (splatter) death sequence -BURN defines the burn (fire) death sequence -ICE defines the freeze (ice) death sequence -RAISE defines the resurrection sequence (for the Arch Vile) -CRASH defines the crash sequence. This is entered when the actor - is a corpse and hits the floor. - - - - -A state definition is started with the 'STATES' keyword and enclosed -by braces '{', '}'. - -A state definition consists of the following: - -1) State labels. This is one of the keywords listed above followed by a ':'. - Example - Spawn: - defines the entry point for the spawn state. - -2) State definitions. These consist of a sprite name, a frame sequence, - the duration in tics (1/35 seconds) and optionally the 'BRIGHT' - keyword to indicate a fullbright display and an action function name - (code pointer) - Example - POSS AABBCCDD 4 A_Chase - This defines 8 states. Each one of them uses the sprite POSS, has a duration - of 4 and uses the code pointer A_Chase which is the standard walk function - for monsters. Of these 8 states the first 2 will use the sprite frame 'A', - the next 2 the frame 'B' and so on. The length of theframe sequence can be - up to 256 characters. Valid frames are 'A'-'Z', '[', '\' and ']'. - Different sprites can be freely mixed in an actor definition each separate - state definition is limited to one sprite only. - -3) Jump instructions - There are 4 different jump instructions: - - -Loop jumps to the most recently defined state label. This is - used for a looping animation - -Stop Stops animating this actor. Normally this is used at the - end of the death sequences. - -Wait Loops the last defined state. This is only useful if a - code pointer is used that waits a given time or for a - certain event. Currently the only usable code pointer - for this is A_FreezeDeathChunks which is normally used - at the end of a freeze death sequence. - -Goto label+offset - Jumps to an arbitrary state in the current actor. - With this you can also jump to a state that was - inherited by a parent. See Example 2) above for this - The 'Goto see' jumps to the walking animation that - has been inherited. - -Important note: ---------------- -This format has been designed for maximum flexibility. As a result no assumptions -are made what the designer wants. No states are ever implicitly created. - - -Action functions: -================= - -This information is kept rather brief. For normal purposes in-depth information -is not necessary. All action functions names are preceded by 'A_'. - -A_BFGSpray Starts the effect when a BFG projectile hits something -A_Pain Plays the pain sound (that's all it does, it can also be used outside the pain sequence!) -A_NoBlocking Sets the actor to non-blocking and drops items. -A_XScream Plays the sound 'misc/gibbed' -A_Look Look for players - used in the idle sequence of monsters -A_Chase Standard walking function - used in the walk sequence of monsters -A_FaceTarget Change angle to face target -A_PosAttack Zombie attack (one bullet) -A_Scream Plays the death sound (that's all it does, it can also be used outside the death sequence!) -A_SPosAttack Shotgunner attack (3 bullets) -A_VileChase Arch Vile: look for corpses and walk. -A_VileStart Plays sound 'vile/start' -A_VileTarget Spawns the Arch Vile fire. -A_VileAttack Arch Vile attack function. Inflicts some damage and thrusts victim in the air. -A_Fire Keeps Arch Vile's fire in front of target -A_StartFire Plays sound 'vile/firestrt' and calls A_Fire -A_FireCrackle Plays sound 'vile/firecrkl' and calls A_Fire -A_Tracer Homing routine for Revenant's missile -A_SkelWhoosh Calls A_FaceTarget and plays sound 'skeleton/swing'. -A_SkelFist Revenant's melee attack. -A_SkelMissile Revenant's missile attack -A_FatRaise Calls A_FaceTarget and plays sound 'fatso/raiseguns'. -A_FatAttack1 Mancubus attack 1 -A_FatAttack2 Mancubus attack 2 -A_FatAttack3 Mancubus attack 3 -A_BossDeath Boss death specials. Has no effect for custom monsters -A_CPosAttack Chaingunner attack -A_CPosRefire Chaingunner refiring -A_TroopAttack Imp attack -A_SargAttack Demon attack -A_HeadAttack Cacodemon attack -A_BruisAttack Baron attack -A_SkullAttack Lost Soul attack -A_Metal Plays 'spider/metal' and calls A_Chase -A_SpidRefire Spider refiring -A_BabyMetal Plays 'baby/walk' and calls A_Chase -A_BspiAttack Arachnotron attack -A_Hoof Plays 'cyber/hoof' and calls A_Chase -A_CyberAttack Cyberdemon attack -A_PainAttack Pain Elemental attack -A_PainDie Pain Elemental death -A_KeenDie Keen death - opens door with tag 666 if all monsters of the calling kind are dead. -A_BrainPain Plays 'brain/pain' at full volume. -A_BrainScream Starts brain explosion -A_BrainDie Ends level if not in deathmatch -A_BrainAwake Plays 'brain/sight' at full volume. -A_BrainSpit Spits one brain cube -A_SpawnFly Brain cube handling incl. monster creation -A_SpawnSound plays 'brain/cube' and calls A_SpawnFly -A_BrainExplode Brain explosion -A_Die Kills actor -A_Detonate Inflicts explosive damage - amount specified by DAMAGE in the actor -A_Mushroom Shoots a lot of mancubus fireballs high in the air - -A_SetFloorClip Sets the FLOORCLIP flag -A_UnSetFloorClip Clears the FLOORCLIP flag -A_HideThing Makes actor invisible -A_UnHideThing Makes actor visible -A_SetInvulnerable Makes actor invulnerable -A_UnSetInvulnerable Makes actor vulnerable -A_SetReflective Sets the REFLECTIVE flag -A_UnSetReflective Clears the REFLECTIVE flag -A_SetReflectiveInvulnerable A_SetInvulnerable + A_SetReflective -A_UnSetReflectiveInvulnerable A_UnSetInvulnerable + A_UnSetReflective -A_SetShootable Makes actor shootable -A_UnSetShootable Makes actor non shootable -A_NoGravity makes Actor not subject to gravity -A_Gravity makes Actor subject to gravity -A_LowGravity makes Actor subject to low gravity -A_ScreamAndUnblock combines A_Scream and A_NoBlocking -A_ActiveSound plays actor's active sound -A_ActiveAndUnblock combines A_ActiveSound and A_NoBlocking -A_FastChase A_Chase variation used by Hexen's class bosses -A_FreezeDeath Starts the freeze death sequence. -A_GenericFreezeDeath Starts the generic freeze death sequence. Calls A_FreezeDeath and sets the ice palette translation. -A_FreezeDeathChunks Burst the actor into chunks. The state with this function has to be looped because it waits until all movement has stopped. -A_IceGuyDie Stops all movement and bursts the actor into ice chunks immediately. - - -The following functions use some actor properties to determine their behavior ------------------------------------------------------------------------------ - -A_Explode Inflicts explosive damage. - Uses: - ExplosionDamage Amount of damage being inflicted - ExplosionRadius Radius of damage - DontHurtShooter If a projectile, don't hurt the guy who shot it. - -A_MeleeAttack performs a melee attack - Uses: - MeleeDamage Amount of damage, The formula is random(1,8)*MeleeDamage - MeleeSound Sound being played if the actual attack happens. - -A_MissileAttack launches a missile - Uses: - MissileName Actor name of the missile being launched - MissileHeight Height above floor for the spawned missile - - A_MissileAttack can handle homing missiles as long as the missile - has the SEEKERMISSILE flag set and contains some kind of tracer - code pointer (A_Tracer, A_MummyFX1Seek, etc.) In its moving animation. - -A_ComboAttack combines A_MeleeAttack and A_MissileAttack depending on the current - distance to the target. - -A_BulletAttack Hitscan attack - Uses: - damage amount of bullets being fired - - -The following functions use direct parameters: ----------------------------------------------- - -A_PlaySound ("soundname") Plays the sound soundname -A_PlayWeaponSound ("soundname") Plays the sound soundname on the weapon channel - Sounds played with A_PlaySound and A_PlayWeaponSound - can occur simultaneously. -A_SeekerMissile (threshold, maxturnangle) - Seeker missile handling. threshold and maxturnangle determine - how 'aggressive' the missile will home in on its target. The larger - the values the more precise it is. threshold specifies the angle - inside which the missile will home in directly on its target. - If the angle toward the target is larger than threshold it will - change its movement angle only partially towards the target. - maxturnangle is the maximum change of movement direction that - will be performed in one move. Maxturnangle should be larger - than threshold. Both angles are specified in degrees and must be - in the range [0, 90]. - Example: The flaming skull of Heretic's mummy uses an equivalent - of A_SeekerMisile 20 30 -A_Jump (chance, distance) Randomly advances to different state. Like painchance, the chance - value can range between 0 and 255. A chance of 0 will never advance, - while a chance of 255 will almost always advance. If the state is - not advanced, then the one immediately following the A_Jump will - be used as if A_Jump had not been present. -A_CustomMissile ("missiletype", spawnheight, spawnofs_xy, angle) - Spawns a missile attack where "missiletype" is the type of missile - to shoot, spawnheight is how high from the monster's feet to shoot - the missile, spawnofs_xy is how far the monster's center to shoot - the missile, and angle is the direction relative to the monster's - facing angle in which to shoot the missile. diff --git a/src/actor.h b/src/actor.h index 2c6a6123d..f8b99e1aa 100644 --- a/src/actor.h +++ b/src/actor.h @@ -279,6 +279,7 @@ enum MF5_BOUNCEONACTORS = 0x00000008, // bouncing missile doesn't explode when it hits an actor MF5_EXPLODEONWATER = 0x00000010, // bouncing missile explpdes when hitting a water surface MF5_AVOIDINGDROPOFF = 0x00000020, // Used to move monsters away fro dropoffs + MF5_NODAMAGE = 0x00000040, // Actor can be shot and reacts to being shot but takes no damage // --- mobj.renderflags --- @@ -398,6 +399,8 @@ enum AMETA_BloodColor, // colorized blood AMETA_GibHealth, // negative health below which this monster dies an extreme death AMETA_WoundHealth, // health needed to enter wound state + AMETA_PoisonDamage, // Amount of poison damage + AMETA_FastSpeed, // Speed in fast mode }; // Map Object definition. diff --git a/src/c_bind.cpp b/src/c_bind.cpp index 02b99ac65..9bc882229 100644 --- a/src/c_bind.cpp +++ b/src/c_bind.cpp @@ -552,13 +552,14 @@ BOOL C_DoKey (event_t *ev) } } - if (binding == NULL) + + if (binding == NULL || *binding==0) { binding = Bindings[ev->data1]; dclick = false; } - if (binding != NULL && (chatmodeon == 0 || ev->data1 < 256)) + if (binding != NULL && *binding!=0 && (chatmodeon == 0 || ev->data1 < 256)) { if (ev->type == EV_KeyUp) { diff --git a/src/g_heretic/a_hereticweaps.cpp b/src/g_heretic/a_hereticweaps.cpp index 594d71b81..d440a6be5 100644 --- a/src/g_heretic/a_hereticweaps.cpp +++ b/src/g_heretic/a_hereticweaps.cpp @@ -124,7 +124,8 @@ FState AStaff::States[] = IMPLEMENT_ACTOR (AStaff, Heretic, -1, 0) PROP_Weapon_SelectionOrder (3800) - PROP_Weapon_Flags (WIF_WIMPY_WEAPON|WIF_HITS_GHOSTS|WIF_BOT_MELEE) + PROP_Flags2Set(MF2_THRUGHOST) + PROP_Weapon_Flags (WIF_WIMPY_WEAPON|WIF_BOT_MELEE) PROP_Weapon_UpState (S_STAFFUP) PROP_Weapon_DownState (S_STAFFDOWN) PROP_Weapon_ReadyState (S_STAFFREADY) @@ -134,7 +135,7 @@ IMPLEMENT_ACTOR (AStaff, Heretic, -1, 0) END_DEFAULTS IMPLEMENT_STATELESS_ACTOR (AStaffPowered, Heretic, -1, 0) - PROP_Weapon_Flags (WIF_WIMPY_WEAPON|WIF_HITS_GHOSTS|WIF_READYSNDHALF|WIF_POWERED_UP|WIF_BOT_MELEE|WIF_STAFF2_KICKBACK) + PROP_Weapon_Flags (WIF_WIMPY_WEAPON|WIF_READYSNDHALF|WIF_POWERED_UP|WIF_BOT_MELEE|WIF_STAFF2_KICKBACK) PROP_Weapon_UpState (S_STAFFUP2) PROP_Weapon_DownState (S_STAFFDOWN2) PROP_Weapon_ReadyState (S_STAFFREADY2) diff --git a/src/g_hexen/a_scriptprojectiles.cpp b/src/g_hexen/a_scriptprojectiles.cpp deleted file mode 100644 index c3561bd48..000000000 --- a/src/g_hexen/a_scriptprojectiles.cpp +++ /dev/null @@ -1,187 +0,0 @@ -// Projectiles intended to be spawned through ACS - -#include "actor.h" -#include "info.h" -#include "p_local.h" - -// Fire Ball ---------------------------------------------------------------- - -class AFireBall : public AActor -{ - DECLARE_ACTOR (AFireBall, AActor) -}; - -FState AFireBall::States[] = -{ -#define S_FIREBALL1_1 0 - S_BRIGHT (FBL1, 'A', 4, NULL , &States[S_FIREBALL1_1+1]), - S_BRIGHT (FBL1, 'B', 4, NULL , &States[S_FIREBALL1_1]), - -#define S_FIREBALL1_X1 (S_FIREBALL1_1+2) - S_BRIGHT (XPL1, 'A', 4, NULL , &States[S_FIREBALL1_X1+1]), - S_BRIGHT (XPL1, 'B', 4, NULL , &States[S_FIREBALL1_X1+2]), - S_BRIGHT (XPL1, 'C', 4, NULL , &States[S_FIREBALL1_X1+3]), - S_BRIGHT (XPL1, 'D', 4, NULL , &States[S_FIREBALL1_X1+4]), - S_BRIGHT (XPL1, 'E', 4, NULL , &States[S_FIREBALL1_X1+5]), - S_BRIGHT (XPL1, 'F', 4, NULL , NULL), -}; - -IMPLEMENT_ACTOR (AFireBall, Hexen, -1, 10) - PROP_SpeedFixed (2) - PROP_RadiusFixed (8) - PROP_HeightFixed (8) - PROP_Damage (4) - PROP_DamageType (MOD_FIRE) - PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY|MF_DROPOFF|MF_MISSILE) - PROP_Flags2 (MF2_NOTELEPORT) - PROP_RenderStyle (STYLE_Add) - - PROP_SpawnState (S_FIREBALL1_1) - PROP_DeathState (S_FIREBALL1_X1) - - PROP_DeathSound ("Fireball") -END_DEFAULTS - -// Arrow -------------------------------------------------------------------- - -class AArrow : public AActor -{ - DECLARE_ACTOR (AArrow, AActor) -}; - -FState AArrow::States[] = -{ -#define S_ARROW_1 0 - S_NORMAL (ARRW, 'A', -1, NULL , NULL), - -#define S_ARROW_X1 (S_ARROW_1+1) - S_NORMAL (ARRW, 'A', 1, NULL , NULL), -}; - -IMPLEMENT_ACTOR (AArrow, Hexen, -1, 50) - PROP_SpeedFixed (6) - PROP_RadiusFixed (8) - PROP_HeightFixed (4) - PROP_Damage (4) - PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY|MF_DROPOFF|MF_MISSILE) - PROP_Flags2 (MF2_NOTELEPORT) - - PROP_SpawnState (S_ARROW_1) - PROP_DeathState (S_ARROW_X1) -END_DEFAULTS - -// Dart --------------------------------------------------------------------- - -class ADart : public AActor -{ - DECLARE_ACTOR (ADart, AActor) -}; - -FState ADart::States[] = -{ -#define S_DART_1 0 - S_NORMAL (DART, 'A', -1, NULL , NULL), - -#define S_DART_X1 (S_DART_1+1) - S_NORMAL (DART, 'A', 1, NULL , NULL), -}; - -IMPLEMENT_ACTOR (ADart, Hexen, -1, 51) - PROP_SpeedFixed (6) - PROP_RadiusFixed (8) - PROP_HeightFixed (4) - PROP_Damage (2) - PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY|MF_DROPOFF|MF_MISSILE) - PROP_Flags2 (MF2_NOTELEPORT) - - PROP_SpawnState (S_DART_1) - PROP_DeathState (S_DART_X1) -END_DEFAULTS - -// Poison Dart -------------------------------------------------------------- - -class APoisonDart : public ADart -{ - DECLARE_STATELESS_ACTOR (APoisonDart, ADart) -public: - int DoSpecialDamage (AActor *victim, int damage); -}; - -IMPLEMENT_STATELESS_ACTOR (APoisonDart, Hexen, -1, 52) -END_DEFAULTS - -int APoisonDart::DoSpecialDamage (AActor *victim, int damage) -{ - if (victim->player) - { - P_PoisonPlayer (victim->player, this, this->target, 20); - damage >>= 1; - } - return damage; -} - -// Ripper Ball -------------------------------------------------------------- - -class ARipperBall : public AActor -{ - DECLARE_ACTOR (ARipperBall, AActor) -}; - -FState ARipperBall::States[] = -{ -#define S_RIPPERBALL_1 0 - S_NORMAL (RIPP, 'A', 3, NULL , &States[S_RIPPERBALL_1+1]), - S_NORMAL (RIPP, 'B', 3, NULL , &States[S_RIPPERBALL_1+2]), - S_NORMAL (RIPP, 'C', 3, NULL , &States[S_RIPPERBALL_1]), - -#define S_RIPPERBALL_X1 (S_RIPPERBALL_1+3) - S_BRIGHT (CFCF, 'Q', 4, NULL , &States[S_RIPPERBALL_X1+1]), - S_BRIGHT (CFCF, 'R', 3, NULL , &States[S_RIPPERBALL_X1+2]), - S_BRIGHT (CFCF, 'S', 4, NULL , &States[S_RIPPERBALL_X1+3]), - S_BRIGHT (CFCF, 'T', 3, NULL , &States[S_RIPPERBALL_X1+4]), - S_BRIGHT (CFCF, 'U', 4, NULL , &States[S_RIPPERBALL_X1+5]), - S_BRIGHT (CFCF, 'V', 3, NULL , &States[S_RIPPERBALL_X1+6]), - S_BRIGHT (CFCF, 'W', 4, NULL , &States[S_RIPPERBALL_X1+7]), - S_BRIGHT (CFCF, 'X', 3, NULL , &States[S_RIPPERBALL_X1+8]), - S_BRIGHT (CFCF, 'Y', 4, NULL , &States[S_RIPPERBALL_X1+9]), - S_BRIGHT (CFCF, 'Z', 3, NULL , NULL), -}; - -IMPLEMENT_ACTOR (ARipperBall, Hexen, -1, 53) - PROP_SpeedFixed (6) - PROP_RadiusFixed (8) - PROP_Damage (2) - PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY|MF_DROPOFF|MF_MISSILE) - PROP_Flags2 (MF2_NOTELEPORT|MF2_RIP) - - PROP_SpawnState (S_RIPPERBALL_1) - PROP_DeathState (S_RIPPERBALL_X1) -END_DEFAULTS - -// Projectile Blade --------------------------------------------------------- - -class AProjectileBlade : public AActor -{ - DECLARE_ACTOR (AProjectileBlade, AActor) -}; - -FState AProjectileBlade::States[] = -{ -#define S_PRJ_BLADE1 0 - S_NORMAL (BLAD, 'A', -1, NULL , NULL), - -#define S_PRJ_BLADE_X1 (S_PRJ_BLADE1+1) - S_NORMAL (BLAD, 'A', 1, NULL , NULL), -}; - -IMPLEMENT_ACTOR (AProjectileBlade, Hexen, -1, 64) - PROP_SpeedFixed (6) - PROP_RadiusFixed (6) - PROP_HeightFixed (6) - PROP_Damage (3) - PROP_Flags (MF_NOBLOCKMAP|MF_NOGRAVITY|MF_DROPOFF|MF_MISSILE) - PROP_Flags2 (MF2_NOTELEPORT) - - PROP_SpawnState (S_PRJ_BLADE1) - PROP_DeathState (S_PRJ_BLADE_X1) -END_DEFAULTS diff --git a/src/g_shared/a_keys.h b/src/g_shared/a_keys.h index 9a2a11d22..912d6e4c4 100644 --- a/src/g_shared/a_keys.h +++ b/src/g_shared/a_keys.h @@ -15,11 +15,6 @@ protected: virtual bool ShouldStay (); }; -class AStrifeKey : public AKey -{ - DECLARE_STATELESS_ACTOR (AStrifeKey, AKey) -}; - bool P_CheckKeys (AActor *owner, int keynum, bool remote); void P_InitKeyMessages (); int P_GetMapColorForLock (int lock); diff --git a/src/g_shared/a_pickups.cpp b/src/g_shared/a_pickups.cpp index a386ce911..57d233fe6 100644 --- a/src/g_shared/a_pickups.cpp +++ b/src/g_shared/a_pickups.cpp @@ -12,6 +12,7 @@ #include "c_dispatch.h" #include "gstrings.h" #include "templates.h" +#include "a_strifeglobal.h" static FRandom pr_restore ("RestorePos"); @@ -1102,6 +1103,21 @@ bool AInventory::DoRespawn () return true; } + +//=========================================================================== +// +// AInventory :: GiveQuest +// +//=========================================================================== + +void AInventory::GiveQuest (AActor *toucher) +{ + int quest = GetClass()->Meta.GetMetaInt(AIMETA_GiveQuest); + if (quest>0 && quest<31) + { + toucher->GiveInventoryType (QuestItemClasses[quest-1]); + } +} //=========================================================================== // // AInventory :: TryPickup @@ -1169,6 +1185,8 @@ bool AInventory::TryPickup (AActor *toucher) } } } + + GiveQuest(toucher); return true; } @@ -1271,6 +1289,7 @@ bool ACustomInventory::TryPickup (AActor *toucher) } else if (useok || ItemFlags & IF_ALWAYSPICKUP) { + GiveQuest (toucher); GoAwayAndDie(); } return useok; @@ -2049,6 +2068,7 @@ IMPLEMENT_ABSTRACT_ACTOR (AMapRevealer) bool AMapRevealer::TryPickup (AActor *toucher) { level.flags |= LEVEL_ALLMAP; + GiveQuest (toucher); GoAwayAndDie (); return true; } diff --git a/src/g_shared/a_pickups.h b/src/g_shared/a_pickups.h index 2ee2adeb9..5c2021877 100644 --- a/src/g_shared/a_pickups.h +++ b/src/g_shared/a_pickups.h @@ -69,6 +69,7 @@ enum { AIMETA_BASE = 0x71000, AIMETA_PickupMessage, // string + AIMETA_GiveQuest, // optionally give one of the quest items. }; enum @@ -145,6 +146,9 @@ public: virtual PalEntry GetBlend (); +protected: + void GiveQuest(AActor * toucher); + private: static int StaticLastMessageTic; static const char *StaticLastMessage; @@ -260,7 +264,7 @@ enum WIF_WIMPY_WEAPON = 0x00000200, // change away when ammo for another weapon is replenished WIF_POWERED_UP = 0x00000400, // this is a tome-of-power'ed version of its sister WIF_EXTREME_DEATH = 0x00000800, // weapon always causes an extreme death - WIF_HITS_GHOSTS = 0x00001000, // melee weapon can strike ghosts + WIF_STAFF2_KICKBACK = 0x00002000, // the powered-up Heretic staff has special kickback WIF_CHEATNOTWEAPON = 1<<27, // Give cheat considers this not a weapon (used by Sigil) diff --git a/src/g_shared/a_weaponpiece.cpp b/src/g_shared/a_weaponpiece.cpp index 696576cf1..14b76f76a 100644 --- a/src/g_shared/a_weaponpiece.cpp +++ b/src/g_shared/a_weaponpiece.cpp @@ -92,6 +92,7 @@ bool AWeaponPiece::TryPickup (AActor *toucher) { // Already has the piece, check if mana needed if (!gaveAmmo) return false; + GiveQuest (toucher); GoAwayAndDie(); return true; } @@ -114,6 +115,7 @@ bool AWeaponPiece::TryPickup (AActor *toucher) FullWeapon->AmmoGive2=Defaults->AmmoGive2; } } + GiveQuest (toucher); GoAwayAndDie(); return true; } diff --git a/src/g_strife/a_alienspectres.cpp b/src/g_strife/a_alienspectres.cpp index 376c75ccc..44af66a61 100644 --- a/src/g_strife/a_alienspectres.cpp +++ b/src/g_strife/a_alienspectres.cpp @@ -7,6 +7,7 @@ #include "m_random.h" #include "a_strifeglobal.h" #include "c_console.h" +#include "gstrings.h" static FRandom pr_spectrespawn ("AlienSpectreSpawn"); static FRandom pr_212e4 ("212e4"); @@ -510,13 +511,13 @@ void A_AlienSpectreDeath (AActor *self) } else if (self->GetClass() == RUNTIME_CLASS(AAlienSpectre2)) { - C_MidPrint("You Killed The Bishop!"); + C_MidPrint(GStrings("TXT_KILLED_BISHOP")); log = 74; player->GiveInventoryType (QuestItemClasses[20]); } else if (self->GetClass() == RUNTIME_CLASS(AAlienSpectre3)) { - C_MidPrint("You've Killed The Oracle!"); + C_MidPrint(GStrings("TXT_KILLED_ORACLE")); // If there are any Oracles still alive, kill them. TThinkerIterator it; AOracle *oracle; @@ -546,7 +547,7 @@ void A_AlienSpectreDeath (AActor *self) } else if (self->GetClass() == RUNTIME_CLASS(AAlienSpectre4)) { - C_MidPrint("You Killed Macil!"); + C_MidPrint(GStrings("TXT_KILLED_MACIL")); player->GiveInventoryType (QuestItemClasses[23]); if (player->FindInventory (QuestItemClasses[24]) == NULL) { // Richter has taken over. Macil is a snake. @@ -559,7 +560,7 @@ void A_AlienSpectreDeath (AActor *self) } else if (self->GetClass() == RUNTIME_CLASS(AAlienSpectre5)) { - C_MidPrint("You've Killed the Loremaster!"); + C_MidPrint(GStrings("TXT_KILLED_LOREMASTER")); ASigil *sigil; player->GiveInventoryType (QuestItemClasses[25]); diff --git a/src/g_strife/a_beggars.cpp b/src/g_strife/a_beggars.cpp deleted file mode 100644 index f1b190708..000000000 --- a/src/g_strife/a_beggars.cpp +++ /dev/null @@ -1,161 +0,0 @@ -#include "actor.h" -#include "m_random.h" -#include "a_action.h" -#include "p_local.h" -#include "p_enemy.h" -#include "s_sound.h" -#include "a_strifeglobal.h" - -void A_SentinelRefire (AActor *); -void A_PeasantAttack (AActor *); -void A_TossGib (AActor *); - -// Base class for the beggars --------------------------------------------- - -class ABeggar : public AStrifeHumanoid -{ - DECLARE_ACTOR (ABeggar, AStrifeHumanoid); -}; - -FState ABeggar::States[] = -{ -#define S_BEGGAR_STND 0 - S_NORMAL (BEGR, 'A', 10, A_Look, &States[S_BEGGAR_STND]), - -#define S_BEGGAR_RUN (S_BEGGAR_STND+1) - S_NORMAL (BEGR, 'A', 4, A_Wander, &States[S_BEGGAR_RUN+1]), - S_NORMAL (BEGR, 'A', 4, A_Wander, &States[S_BEGGAR_RUN+2]), - S_NORMAL (BEGR, 'B', 4, A_Wander, &States[S_BEGGAR_RUN+3]), - S_NORMAL (BEGR, 'B', 4, A_Wander, &States[S_BEGGAR_RUN+4]), - S_NORMAL (BEGR, 'C', 4, A_Wander, &States[S_BEGGAR_RUN+5]), - S_NORMAL (BEGR, 'C', 4, A_Wander, &States[S_BEGGAR_RUN]), - -#define S_BEGGAR_ATTACK (S_BEGGAR_RUN+6) - S_NORMAL (BEGR, 'D', 8, NULL, &States[S_BEGGAR_ATTACK+1]), - S_NORMAL (BEGR, 'E', 8, A_PeasantAttack, &States[S_BEGGAR_ATTACK+2]), - S_NORMAL (BEGR, 'E', 1, A_Chase, &States[S_BEGGAR_ATTACK+3]), - S_NORMAL (BEGR, 'D', 8, A_SentinelRefire, &States[S_BEGGAR_ATTACK]), - -#define S_BEGGAR_PAIN (S_BEGGAR_ATTACK+4) - S_NORMAL (BEGR, 'A', 3, A_Pain, &States[S_BEGGAR_PAIN+1]), - S_NORMAL (BEGR, 'A', 3, A_Chase, &States[S_BEGGAR_ATTACK]), - -#define S_BEGGAR_DIE (S_BEGGAR_PAIN+2) - S_NORMAL (BEGR, 'F', 4, NULL, &States[S_BEGGAR_DIE+1]), - S_NORMAL (BEGR, 'G', 4, A_Scream, &States[S_BEGGAR_DIE+2]), - S_NORMAL (BEGR, 'H', 4, NULL, &States[S_BEGGAR_DIE+3]), - S_NORMAL (BEGR, 'I', 4, A_NoBlocking, &States[S_BEGGAR_DIE+4]), - S_NORMAL (BEGR, 'J', 4, NULL, &States[S_BEGGAR_DIE+5]), - S_NORMAL (BEGR, 'K', 4, NULL, &States[S_BEGGAR_DIE+6]), - S_NORMAL (BEGR, 'L', 4, NULL, &States[S_BEGGAR_DIE+7]), - S_NORMAL (BEGR, 'M', 4, NULL, &States[S_BEGGAR_DIE+8]), - S_NORMAL (BEGR, 'N', -1, NULL, NULL), - -#define S_BEGGAR_XDIE (S_BEGGAR_DIE+9) - S_NORMAL (BEGR, 'F', 5, A_TossGib, &States[S_BEGGAR_XDIE+1]), - S_NORMAL (GIBS, 'M', 5, A_TossGib, &States[S_BEGGAR_XDIE+2]), - S_NORMAL (GIBS, 'N', 5, A_XScream, &States[S_BEGGAR_XDIE+3]), - S_NORMAL (GIBS, 'O', 5, A_NoBlocking, &States[S_BEGGAR_XDIE+4]), - S_NORMAL (GIBS, 'P', 4, A_TossGib, &States[S_BEGGAR_XDIE+5]), - S_NORMAL (GIBS, 'Q', 4, A_TossGib, &States[S_BEGGAR_XDIE+6]), - S_NORMAL (GIBS, 'R', 4, A_TossGib, &States[S_BEGGAR_XDIE+7]), - S_NORMAL (GIBS, 'S', 4, A_TossGib, &States[S_BEGGAR_XDIE+8]), - S_NORMAL (GIBS, 'T', 4, A_TossGib, &States[S_BEGGAR_XDIE+9]), - S_NORMAL (GIBS, 'U', 5, NULL, &States[S_BEGGAR_XDIE+10]), - S_NORMAL (GIBS, 'V', 1400, NULL, NULL), -}; - -IMPLEMENT_ACTOR (ABeggar, Strife, 0, 0) - PROP_SpawnState (S_BEGGAR_STND) - PROP_SeeState (S_BEGGAR_RUN) - PROP_PainState (S_BEGGAR_PAIN) - PROP_MeleeState (S_BEGGAR_ATTACK) - PROP_DeathState (S_BEGGAR_DIE) - PROP_XDeathState (S_BEGGAR_XDIE) - - PROP_SpawnHealth (20) - PROP_PainChance (250) - PROP_SpeedFixed (3) - PROP_RadiusFixed (20) - PROP_HeightFixed (56) - PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_JUSTHIT) - PROP_Flags2 (MF2_FLOORCLIP|MF2_PASSMOBJ|MF2_PUSHWALL|MF2_MCROSS) - PROP_Flags3 (MF3_ISMONSTER) - PROP_Flags4 (MF4_NOSPLASHALERT) - PROP_MinMissileChance (150) - PROP_Tag ("Beggar") - - PROP_AttackSound ("beggar/attack") - PROP_PainSound ("beggar/pain") - PROP_DeathSound ("beggar/death") -END_DEFAULTS - -// Beggar 1 ----------------------------------------------------------------- - -class ABeggar1 : public ABeggar -{ - DECLARE_STATELESS_ACTOR (ABeggar1, ABeggar) -}; - -IMPLEMENT_STATELESS_ACTOR (ABeggar1, Strife, 141, 0) - PROP_StrifeType (38) - PROP_StrifeTeaserType (37) - PROP_StrifeTeaserType2 (38) - PROP_Tag ("Beggar") -END_DEFAULTS - -// Beggar 2 ----------------------------------------------------------------- - -class ABeggar2 : public ABeggar -{ - DECLARE_STATELESS_ACTOR (ABeggar2, ABeggar) -}; - -IMPLEMENT_STATELESS_ACTOR (ABeggar2, Strife, 155, 0) - PROP_StrifeType (39) - PROP_StrifeTeaserType (38) - PROP_StrifeTeaserType2 (39) - PROP_Tag ("Beggar") -END_DEFAULTS - -// Beggar 3 ----------------------------------------------------------------- - -class ABeggar3 : public ABeggar -{ - DECLARE_STATELESS_ACTOR (ABeggar3, ABeggar) -}; - -IMPLEMENT_STATELESS_ACTOR (ABeggar3, Strife, 156, 0) - PROP_StrifeType (40) - PROP_StrifeTeaserType (39) - PROP_StrifeTeaserType2 (40) - PROP_Tag ("Beggar") -END_DEFAULTS - -// Beggar 4 ----------------------------------------------------------------- - -class ABeggar4 : public ABeggar -{ - DECLARE_STATELESS_ACTOR (ABeggar4, ABeggar) -}; - -IMPLEMENT_STATELESS_ACTOR (ABeggar4, Strife, 157, 0) - PROP_StrifeType (41) - PROP_StrifeTeaserType (40) - PROP_StrifeTeaserType2 (41) - PROP_Tag ("Beggar") -END_DEFAULTS - -// Beggar 5 ----------------------------------------------------------------- - -class ABeggar5 : public ABeggar -{ - DECLARE_STATELESS_ACTOR (ABeggar5, ABeggar) -}; - -IMPLEMENT_STATELESS_ACTOR (ABeggar5, Strife, 158, 0) - PROP_StrifeType (42) - PROP_StrifeTeaserType (41) - PROP_StrifeTeaserType2 (42) - PROP_Tag ("Beggar") -END_DEFAULTS diff --git a/src/g_strife/a_merchants.cpp b/src/g_strife/a_merchants.cpp deleted file mode 100644 index 4fa29d4b3..000000000 --- a/src/g_strife/a_merchants.cpp +++ /dev/null @@ -1,228 +0,0 @@ -#include "actor.h" -#include "m_random.h" -#include "a_action.h" -#include "p_local.h" -#include "p_enemy.h" -#include "s_sound.h" - -void A_AlertOthers (AActor *); -void A_CloseUpShop (AActor *); -void A_ClearSoundTarget (AActor *); -void A_PlayActiveSound (AActor *); - -// Base class for the merchants --------------------------------------------- - -class AMerchant : public AActor -{ - DECLARE_ACTOR (AMerchant, AActor) -public: - int TakeSpecialDamage (AActor *inflictor, AActor *source, int damage, int damagetype); -}; - -FState AMerchant::States[] = -{ -#define S_MERCHANT_YES 0 - S_NORMAL (MRYS, 'A', 20, NULL, &States[S_MERCHANT_YES+6]), - -#define S_MERCHANT_NO (S_MERCHANT_YES+1) - S_NORMAL (MRNO, 'A', 6, NULL, &States[S_MERCHANT_NO+1]), - S_NORMAL (MRNO, 'B', 6, NULL, &States[S_MERCHANT_NO+2]), - S_NORMAL (MRNO, 'C', 10, NULL, &States[S_MERCHANT_NO+3]), - S_NORMAL (MRNO, 'B', 6, NULL, &States[S_MERCHANT_NO+4]), - S_NORMAL (MRNO, 'A', 6, NULL, &States[S_MERCHANT_NO+5]), - -#define S_MERCHANT_STND (S_MERCHANT_NO+5) - S_NORMAL (MRST, 'A', 10, A_Look2, &States[S_MERCHANT_STND]), - -#define S_MERCHANT_LOOK1 (S_MERCHANT_STND+1) - // This actually uses A_LoopActiveSound, but since that doesn't actually - // loop in Strife, this is probably better, eh? - S_NORMAL (MRLK, 'A', 30, A_PlayActiveSound, &States[S_MERCHANT_STND]), - -#define S_MERCHANT_LOOK2 (S_MERCHANT_LOOK1+1) - S_NORMAL (MRLK, 'B', 30, NULL, &States[S_MERCHANT_STND]), - -#define S_MERCHANT_BD (S_MERCHANT_LOOK2+1) - S_NORMAL (MRBD, 'A', 4, NULL, &States[S_MERCHANT_BD+1]), - S_NORMAL (MRBD, 'B', 4, NULL, &States[S_MERCHANT_BD+2]), - S_NORMAL (MRBD, 'C', 4, NULL, &States[S_MERCHANT_BD+3]), - S_NORMAL (MRBD, 'D', 4, NULL, &States[S_MERCHANT_BD+4]), - S_NORMAL (MRBD, 'E', 4, NULL, &States[S_MERCHANT_BD+5]), - S_NORMAL (MRBD, 'D', 4, NULL, &States[S_MERCHANT_BD+6]), - S_NORMAL (MRBD, 'C', 4, NULL, &States[S_MERCHANT_BD+7]), - S_NORMAL (MRBD, 'B', 4, NULL, &States[S_MERCHANT_BD+8]), - S_NORMAL (MRBD, 'A', 5, NULL, &States[S_MERCHANT_BD+9]), - S_NORMAL (MRBD, 'F', 6, NULL, &States[S_MERCHANT_STND]), - -#define S_MERCHANT_PAIN (S_MERCHANT_BD+10) - S_NORMAL (MRPN, 'A', 3, A_AlertOthers, &States[S_MERCHANT_PAIN+1]), - S_NORMAL (MRPN, 'B', 3, A_Pain, &States[S_MERCHANT_PAIN+2]), - S_NORMAL (MRPN, 'C', 3, NULL, &States[S_MERCHANT_PAIN+3]), - S_NORMAL (MRPN, 'D', 9, A_CloseUpShop, &States[S_MERCHANT_PAIN+4]), - S_NORMAL (MRPN, 'C', 4, NULL, &States[S_MERCHANT_PAIN+5]), - S_NORMAL (MRPN, 'B', 3, NULL, &States[S_MERCHANT_PAIN+6]), - S_NORMAL (MRPN, 'A', 3, A_ClearSoundTarget, &States[S_MERCHANT_STND]), - -#define S_MERCHANT_GT (S_MERCHANT_PAIN+7) - S_NORMAL (MRGT, 'A', 5, NULL, &States[S_MERCHANT_GT+1]), - S_NORMAL (MRGT, 'B', 5, NULL, &States[S_MERCHANT_GT+2]), - S_NORMAL (MRGT, 'C', 5, NULL, &States[S_MERCHANT_GT+3]), - S_NORMAL (MRGT, 'D', 5, NULL, &States[S_MERCHANT_GT+4]), - S_NORMAL (MRGT, 'E', 5, NULL, &States[S_MERCHANT_GT+5]), - S_NORMAL (MRGT, 'F', 5, NULL, &States[S_MERCHANT_GT+6]), - S_NORMAL (MRGT, 'G', 5, NULL, &States[S_MERCHANT_GT+7]), - S_NORMAL (MRGT, 'H', 5, NULL, &States[S_MERCHANT_GT+8]), - S_NORMAL (MRGT, 'I', 5, NULL, &States[S_MERCHANT_STND]) -}; - -IMPLEMENT_ACTOR (AMerchant, Strife, -1, 0) - PROP_SpawnState (S_MERCHANT_STND) - PROP_SeeState (S_MERCHANT_PAIN) - PROP_PainState (S_MERCHANT_PAIN) - PROP_GreetingsState (S_MERCHANT_GT) - PROP_YesState (S_MERCHANT_YES) - PROP_NoState (S_MERCHANT_NO) - - PROP_SpawnHealthLong (10000000) - PROP_PainChance (150) - PROP_RadiusFixed (20) - PROP_HeightFixed (56) - PROP_Mass (5000) - PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_NOTDMATCH) - PROP_Flags4 (MF4_NOSPLASHALERT) -END_DEFAULTS - -int AMerchant::TakeSpecialDamage (AActor *inflictor, AActor *source, int damage, int damagetype) -{ - target = source; - if (PainState != NULL) - { - SetState (PainState); - } - return -1; -} - -// Weapon Smith ------------------------------------------------------------- - -class AWeaponSmith : public AMerchant -{ - DECLARE_STATELESS_ACTOR (AWeaponSmith, AMerchant) -}; - -IMPLEMENT_STATELESS_ACTOR (AWeaponSmith, Strife, 116, 0) - PROP_StrifeType (2) - PROP_StrifeTeaserType (2) - PROP_StrifeTeaserType2 (2) - PROP_PainSound ("smith/pain") - PROP_Tag ("Weapon_Smith") -END_DEFAULTS - -// Bar Keep ----------------------------------------------------------------- - -class ABarKeep : public AMerchant -{ - DECLARE_STATELESS_ACTOR (ABarKeep, AMerchant) -}; - -IMPLEMENT_STATELESS_ACTOR (ABarKeep, Strife, 72, 0) - PROP_Translation (TRANSLATION_Standard, 4) - PROP_StrifeType (3) - PROP_StrifeTeaserType (3) - PROP_StrifeTeaserType2 (3) - PROP_PainSound ("barkeep/pain") - PROP_ActiveSound ("barkeep/active") - PROP_Tag ("Bar_Keep") -END_DEFAULTS - -// Armorer ------------------------------------------------------------------ - -class AArmorer : public AMerchant -{ - DECLARE_STATELESS_ACTOR (AArmorer, AMerchant) -}; - -IMPLEMENT_STATELESS_ACTOR (AArmorer, Strife, 73, 0) - PROP_Translation (TRANSLATION_Standard, 5) - PROP_StrifeType (4) - PROP_StrifeTeaserType (4) - PROP_StrifeTeaserType2 (4) - PROP_PainSound ("armorer/pain") - PROP_Tag ("Aromorer") -END_DEFAULTS - -// Medic -------------------------------------------------------------------- - -class AMedic : public AMerchant -{ - DECLARE_STATELESS_ACTOR (AMedic, AMerchant) -}; - -IMPLEMENT_STATELESS_ACTOR (AMedic, Strife, 74, 0) - PROP_Translation (TRANSLATION_Standard, 6) - PROP_StrifeType (5) - PROP_StrifeTeaserType (5) - PROP_StrifeTeaserType2 (5) - PROP_PainSound ("medic/pain") - PROP_Tag ("Medic") -END_DEFAULTS - - -//============================================================================ -// -// A_AlertOthers -// -// [RH] Split from A_CloseUpShop so that when merchants go into their pain -// state, the very first thing they do is send out an alert, which should -// prevent perpetual store closure. If we wait until A_CloseUpShop to do this, -// it is possible to set up a chain reaction where one merchant sends out the -// alert after another has already cleared their alert, causing that merchant -// to go back on the alert and send out their own alert 9 tics later. -// -//============================================================================ - -void A_AlertOthers (AActor *self) -{ - if (self->target != NULL && self->target->player != NULL) - { - P_NoiseAlert (self->target, self); - } -} - -//============================================================================ -// -// A_CloseUpShop -// -//============================================================================ - -void A_CloseUpShop (AActor *self) -{ - EV_DoDoor (DDoor::doorCloseWaitOpen, NULL, self, 999, 8*FRACUNIT, 120*TICRATE, 0, 0); -} - -//============================================================================ -// -// A_ClearSoundTarget -// -//============================================================================ - -void A_ClearSoundTarget (AActor *self) -{ - AActor *actor; - - self->Sector->SoundTarget = NULL; - for (actor = self->Sector->thinglist; actor != NULL; actor = actor->snext) - { - actor->LastHeard = NULL; - } -} - -//============================================================================ -// -// A_PlayActiveSound -// -//============================================================================ - -void A_PlayActiveSound (AActor *self) -{ - S_SoundID (self, CHAN_VOICE, self->ActiveSound, 1, ATTN_NORM); -} diff --git a/src/g_strife/a_peasant.cpp b/src/g_strife/a_peasant.cpp deleted file mode 100644 index 3a51caa5a..000000000 --- a/src/g_strife/a_peasant.cpp +++ /dev/null @@ -1,427 +0,0 @@ -#include "actor.h" -#include "m_random.h" -#include "a_action.h" -#include "p_local.h" -#include "p_enemy.h" -#include "a_strifeglobal.h" - -static FRandom pr_peasatk ("PeasantAttack"); - -void A_PeasantAttack (AActor *); -void A_TossGib (AActor *); -void A_GetHurt (AActor *); - -// Peasant Base Class ------------------------------------------------------- - -class APeasant : public AStrifeHumanoid -{ - DECLARE_ACTOR (APeasant, AStrifeHumanoid) -}; - -FState APeasant::States[] = -{ -#define S_PEASANT_STND 0 - S_NORMAL (PEAS, 'A', 10, A_Look2, &States[S_PEASANT_STND]), - -#define S_PEASANT_RUN (S_PEASANT_STND+1) - S_NORMAL (PEAS, 'A', 5, A_Wander, &States[S_PEASANT_RUN+1]), - S_NORMAL (PEAS, 'A', 5, A_Wander, &States[S_PEASANT_RUN+2]), - S_NORMAL (PEAS, 'B', 5, A_Wander, &States[S_PEASANT_RUN+3]), - S_NORMAL (PEAS, 'B', 5, A_Wander, &States[S_PEASANT_RUN+4]), - S_NORMAL (PEAS, 'C', 5, A_Wander, &States[S_PEASANT_RUN+5]), - S_NORMAL (PEAS, 'C', 5, A_Wander, &States[S_PEASANT_RUN+6]), - S_NORMAL (PEAS, 'D', 5, A_Wander, &States[S_PEASANT_RUN+7]), - S_NORMAL (PEAS, 'D', 5, A_Wander, &States[S_PEASANT_STND]), - -#define S_PEASANT_MELEE (S_PEASANT_RUN+8) - S_NORMAL (PEAS, 'E', 10, A_FaceTarget, &States[S_PEASANT_MELEE+1]), - S_NORMAL (PEAS, 'F', 8, A_PeasantAttack, &States[S_PEASANT_MELEE+2]), - S_NORMAL (PEAS, 'E', 8, NULL, &States[S_PEASANT_RUN]), - -#define S_PEASANT_PAIN (S_PEASANT_MELEE+3) - S_NORMAL (PEAS, 'O', 3, NULL, &States[S_PEASANT_PAIN+1]), - S_NORMAL (PEAS, 'O', 3, A_Pain, &States[S_PEASANT_MELEE]), - -#define S_PEASANT_WOUNDED (S_PEASANT_PAIN+2) - S_NORMAL (PEAS, 'G', 5, NULL, &States[S_PEASANT_WOUNDED+1]), - S_NORMAL (PEAS, 'H', 10, A_GetHurt, &States[S_PEASANT_WOUNDED+2]), - S_NORMAL (PEAS, 'I', 6, NULL, &States[S_PEASANT_WOUNDED+1]), - -#define S_PEASANT_DIE (S_PEASANT_WOUNDED+3) - S_NORMAL (PEAS, 'G', 5, NULL, &States[S_PEASANT_DIE+1]), - S_NORMAL (PEAS, 'H', 5, A_Scream, &States[S_PEASANT_DIE+2]), - S_NORMAL (PEAS, 'I', 6, NULL, &States[S_PEASANT_DIE+3]), - S_NORMAL (PEAS, 'J', 5, A_NoBlocking, &States[S_PEASANT_DIE+4]), - S_NORMAL (PEAS, 'K', 5, NULL, &States[S_PEASANT_DIE+5]), - S_NORMAL (PEAS, 'L', 6, NULL, &States[S_PEASANT_DIE+6]), - S_NORMAL (PEAS, 'M', 8, NULL, &States[S_PEASANT_DIE+7]), - S_NORMAL (PEAS, 'N', 1400, NULL, &States[S_PEASANT_DIE+8]), - S_NORMAL (GIBS, 'U', 5, NULL, &States[S_PEASANT_DIE+9]), - S_NORMAL (GIBS, 'V', 1400, NULL, NULL), - -#define S_PEASANT_XDIE (S_PEASANT_DIE+10) - S_NORMAL (GIBS, 'M', 5, A_TossGib, &States[S_PEASANT_XDIE+1]), - S_NORMAL (GIBS, 'N', 5, A_XScream, &States[S_PEASANT_XDIE+2]), - S_NORMAL (GIBS, 'O', 5, A_NoBlocking, &States[S_PEASANT_XDIE+3]), - S_NORMAL (GIBS, 'P', 4, A_TossGib, &States[S_PEASANT_XDIE+4]), - S_NORMAL (GIBS, 'Q', 4, A_TossGib, &States[S_PEASANT_XDIE+5]), - S_NORMAL (GIBS, 'R', 4, A_TossGib, &States[S_PEASANT_XDIE+6]), - S_NORMAL (GIBS, 'S', 4, A_TossGib, &States[S_PEASANT_DIE+8]) -}; - -IMPLEMENT_ACTOR (APeasant, Strife, -1, 0) - PROP_SpawnState (S_PEASANT_STND) - PROP_SeeState (S_PEASANT_RUN) - PROP_PainState (S_PEASANT_PAIN) - PROP_MeleeState (S_PEASANT_MELEE) - PROP_WoundState (S_PEASANT_WOUNDED) - PROP_DeathState (S_PEASANT_DIE) - PROP_XDeathState (S_PEASANT_XDIE) - - PROP_SpawnHealth (31) - PROP_PainChance (200) - PROP_SpeedFixed (8) - PROP_RadiusFixed (20) - PROP_HeightFixed (56) - PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_JUSTHIT|MF_FRIENDLY) - PROP_Flags2 (MF2_FLOORCLIP|MF2_PASSMOBJ|MF2_PUSHWALL|MF2_MCROSS) - PROP_Flags3 (MF3_ISMONSTER) - PROP_Flags4 (MF4_NOSPLASHALERT) - PROP_MinMissileChance (150) - - PROP_SeeSound ("peasant/sight") - PROP_AttackSound ("peasant/attack") - PROP_PainSound ("peasant/pain") - PROP_DeathSound ("peasant/death") -END_DEFAULTS - -// Peasant Variant 1 -------------------------------------------------------- - -class APeasant1 : public APeasant -{ - DECLARE_STATELESS_ACTOR (APeasant1, APeasant) -}; - -IMPLEMENT_STATELESS_ACTOR (APeasant1, Strife, 3004, 0) - PROP_StrifeType (6) - PROP_StrifeTeaserType (6) - PROP_StrifeTeaserType2 (6) - PROP_SpeedFixed (4) -END_DEFAULTS - -// Peasant Variant 2 -------------------------------------------------------- - -class APeasant2 : public APeasant -{ - DECLARE_STATELESS_ACTOR (APeasant2, APeasant) -}; - -IMPLEMENT_STATELESS_ACTOR (APeasant2, Strife, 130, 0) - PROP_StrifeType (7) - PROP_StrifeTeaserType (7) - PROP_StrifeTeaserType2 (7) - PROP_SpeedFixed (5) -END_DEFAULTS - -// Peasant Variant 3 -------------------------------------------------------- - -class APeasant3 : public APeasant -{ - DECLARE_STATELESS_ACTOR (APeasant3, APeasant) -}; - -IMPLEMENT_STATELESS_ACTOR (APeasant3, Strife, 131, 0) - PROP_StrifeType (8) - PROP_StrifeTeaserType (8) - PROP_StrifeTeaserType2 (8) - PROP_SpeedFixed (5) -END_DEFAULTS - -// Peasant Variant 4 -------------------------------------------------------- - -class APeasant4 : public APeasant -{ - DECLARE_STATELESS_ACTOR (APeasant4, APeasant) -}; - -IMPLEMENT_STATELESS_ACTOR (APeasant4, Strife, 65, 0) - PROP_Translation (TRANSLATION_Standard,0) - PROP_StrifeType (9) - PROP_StrifeTeaserType (9) - PROP_StrifeTeaserType2 (9) - PROP_SpeedFixed (7) -END_DEFAULTS - -// Peasant Variant 5 -------------------------------------------------------- - -class APeasant5 : public APeasant -{ - DECLARE_STATELESS_ACTOR (APeasant5, APeasant) -}; - -IMPLEMENT_STATELESS_ACTOR (APeasant5, Strife, 132, 0) - PROP_Translation (TRANSLATION_Standard,0) - PROP_StrifeType (10) - PROP_StrifeTeaserType (10) - PROP_StrifeTeaserType2 (10) - PROP_SpeedFixed (7) -END_DEFAULTS - -// Peasant Variant 6 -------------------------------------------------------- - -class APeasant6 : public APeasant -{ - DECLARE_STATELESS_ACTOR (APeasant6, APeasant) -}; - -IMPLEMENT_STATELESS_ACTOR (APeasant6, Strife, 133, 0) - PROP_Translation (TRANSLATION_Standard,0) - PROP_StrifeType (11) - PROP_StrifeTeaserType (11) - PROP_StrifeTeaserType2 (11) - PROP_SpeedFixed (7) -END_DEFAULTS - -// Peasant Variant 7 -------------------------------------------------------- - -class APeasant7 : public APeasant -{ - DECLARE_STATELESS_ACTOR (APeasant7, APeasant) -}; - -IMPLEMENT_STATELESS_ACTOR (APeasant7, Strife, 66, 0) - PROP_Translation (TRANSLATION_Standard,2) - PROP_StrifeType (12) - PROP_StrifeTeaserType (12) - PROP_StrifeTeaserType2 (12) -END_DEFAULTS - -// Peasant Variant 8 -------------------------------------------------------- - -class APeasant8 : public APeasant -{ - DECLARE_STATELESS_ACTOR (APeasant8, APeasant) -}; - -IMPLEMENT_STATELESS_ACTOR (APeasant8, Strife, 134, 0) - PROP_Translation (TRANSLATION_Standard,2) - PROP_StrifeType (13) - PROP_StrifeTeaserType (13) - PROP_StrifeTeaserType2 (13) -END_DEFAULTS - -// Peasant Variant 9 -------------------------------------------------------- - -class APeasant9 : public APeasant -{ - DECLARE_STATELESS_ACTOR (APeasant9, APeasant) -}; - -IMPLEMENT_STATELESS_ACTOR (APeasant9, Strife, 135, 0) - PROP_Translation (TRANSLATION_Standard,2) - PROP_StrifeType (14) - PROP_StrifeTeaserType (14) - PROP_StrifeTeaserType2 (14) -END_DEFAULTS - -// Peasant Variant 10 -------------------------------------------------------- - -class APeasant10 : public APeasant -{ - DECLARE_STATELESS_ACTOR (APeasant10, APeasant) -}; - -IMPLEMENT_STATELESS_ACTOR (APeasant10, Strife, 67, 0) - PROP_Translation (TRANSLATION_Standard,1) - PROP_StrifeType (15) - PROP_StrifeTeaserType (15) - PROP_StrifeTeaserType2 (15) -END_DEFAULTS - -// Peasant Variant 11 -------------------------------------------------------- - -class APeasant11 : public APeasant -{ - DECLARE_STATELESS_ACTOR (APeasant11, APeasant) -}; - -IMPLEMENT_STATELESS_ACTOR (APeasant11, Strife, 136, 0) - PROP_Translation (TRANSLATION_Standard,1) - PROP_StrifeType (16) - PROP_StrifeTeaserType (16) - PROP_StrifeTeaserType2 (16) - PROP_SpeedFixed (7) -END_DEFAULTS - -// Peasant Variant 12 -------------------------------------------------------- - -class APeasant12 : public APeasant -{ - DECLARE_STATELESS_ACTOR (APeasant12, APeasant) -}; - -IMPLEMENT_STATELESS_ACTOR (APeasant12, Strife, 137, 0) - PROP_Translation (TRANSLATION_Standard,1) - PROP_StrifeType (17) - PROP_StrifeTeaserType (17) - PROP_StrifeTeaserType2 (17) -END_DEFAULTS - -// Peasant Variant 13 -------------------------------------------------------- - -class APeasant13 : public APeasant -{ - DECLARE_STATELESS_ACTOR (APeasant13, APeasant) -}; - -IMPLEMENT_STATELESS_ACTOR (APeasant13, Strife, 172, 0) - PROP_Translation (TRANSLATION_Standard,3) - PROP_StrifeType (18) - PROP_StrifeTeaserType (18) - PROP_StrifeTeaserType2 (18) -END_DEFAULTS - -// Peasant Variant 14 -------------------------------------------------------- - -class APeasant14 : public APeasant -{ - DECLARE_STATELESS_ACTOR (APeasant14, APeasant) -}; - -IMPLEMENT_STATELESS_ACTOR (APeasant14, Strife, 173, 0) - PROP_Translation (TRANSLATION_Standard,3) - PROP_StrifeType (19) - PROP_StrifeTeaserType (19) - PROP_StrifeTeaserType2 (19) -END_DEFAULTS - -// Peasant Variant 15 -------------------------------------------------------- - -class APeasant15 : public APeasant -{ - DECLARE_STATELESS_ACTOR (APeasant15, APeasant) -}; - -IMPLEMENT_STATELESS_ACTOR (APeasant15, Strife, 174, 0) - PROP_Translation (TRANSLATION_Standard,3) - PROP_StrifeType (20) - PROP_StrifeTeaserType (20) - PROP_StrifeTeaserType2 (20) -END_DEFAULTS - -// Peasant Variant 16 -------------------------------------------------------- - -class APeasant16 : public APeasant -{ - DECLARE_STATELESS_ACTOR (APeasant16, APeasant) -}; - -IMPLEMENT_STATELESS_ACTOR (APeasant16, Strife, 175, 0) - PROP_Translation (TRANSLATION_Standard,5) - PROP_StrifeType (21) - PROP_StrifeTeaserType (21) - PROP_StrifeTeaserType2 (21) -END_DEFAULTS - -// Peasant Variant 17 -------------------------------------------------------- - -class APeasant17 : public APeasant -{ - DECLARE_STATELESS_ACTOR (APeasant17, APeasant) -}; - -IMPLEMENT_STATELESS_ACTOR (APeasant17, Strife, 176, 0) - PROP_Translation (TRANSLATION_Standard,5) - PROP_StrifeType (22) - PROP_StrifeTeaserType (22) - PROP_StrifeTeaserType2 (22) -END_DEFAULTS - -// Peasant Variant 18 -------------------------------------------------------- - -class APeasant18 : public APeasant -{ - DECLARE_STATELESS_ACTOR (APeasant18, APeasant) -}; - -IMPLEMENT_STATELESS_ACTOR (APeasant18, Strife, 177, 0) - PROP_Translation (TRANSLATION_Standard,5) - PROP_StrifeType (23) - PROP_StrifeTeaserType (23) - PROP_StrifeTeaserType2 (23) -END_DEFAULTS - -// Peasant Variant 19 -------------------------------------------------------- - -class APeasant19 : public APeasant -{ - DECLARE_STATELESS_ACTOR (APeasant19, APeasant) -}; - -IMPLEMENT_STATELESS_ACTOR (APeasant19, Strife, 178, 0) - PROP_Translation (TRANSLATION_Standard,4) - PROP_StrifeType (24) - PROP_StrifeTeaserType (24) - PROP_StrifeTeaserType2 (24) -END_DEFAULTS - -// Peasant Variant 20 -------------------------------------------------------- - -class APeasant20 : public APeasant -{ - DECLARE_STATELESS_ACTOR (APeasant20, APeasant) -}; - -IMPLEMENT_STATELESS_ACTOR (APeasant20, Strife, 179, 0) - PROP_Translation (TRANSLATION_Standard,4) - PROP_StrifeType (25) - PROP_StrifeTeaserType (25) - PROP_StrifeTeaserType2 (25) -END_DEFAULTS - -// Peasant Variant 21 -------------------------------------------------------- - -class APeasant21 : public APeasant -{ - DECLARE_STATELESS_ACTOR (APeasant21, APeasant) -}; - -IMPLEMENT_STATELESS_ACTOR (APeasant21, Strife, 180, 0) - PROP_Translation (TRANSLATION_Standard,4) - PROP_StrifeType (26) - PROP_StrifeTeaserType (26) - PROP_StrifeTeaserType2 (26) -END_DEFAULTS - -// Peasant Variant 22 -------------------------------------------------------- - -class APeasant22 : public APeasant -{ - DECLARE_STATELESS_ACTOR (APeasant22, APeasant) -}; - -IMPLEMENT_STATELESS_ACTOR (APeasant22, Strife, 181, 0) - PROP_Translation (TRANSLATION_Standard,6) - PROP_StrifeType (27) - PROP_StrifeTeaserType (27) - PROP_StrifeTeaserType2 (27) -END_DEFAULTS - -//============================================================================ -// -// A_PeasantAttack -// -//============================================================================ - -void A_PeasantAttack (AActor *self) -{ - if (self->target == NULL) - return; - - A_FaceTarget (self); - - if (self->CheckMeleeRange ()) - { - P_DamageMobj (self->target, self, self, (pr_peasatk() % 5) * 2 + 2, MOD_HIT); - } -} diff --git a/src/g_strife/a_questitems.cpp b/src/g_strife/a_questitems.cpp deleted file mode 100644 index 4760eccd0..000000000 --- a/src/g_strife/a_questitems.cpp +++ /dev/null @@ -1,449 +0,0 @@ -/* - * Quest Item Usage: - * - * 1 You got Beldin's ring - * 2 You got the Chalice - * 3 You got 300 gold, so it's time to visit Irale and the governor - * 4 Accepted the governor's power coupling mission - * 5 Accepted the governor's mission to kill Derwin - * 6 You broke the Front's power coupling - * 7 You took out the scanning team - * 8 You got the broken power coupling - * 9 You got the ear - * 10 You got the prison pass - * 11 You got the prison key - * 12 You got the severed hand - * 13 You've freed the prisoners! - * 14 You've Blown Up the Crystal - * 15 You got the guard uniform - * 16 You've Blown Up the Gates (/Piston) - * 17 You watched the Sigil slideshow on map10 - * 18 You got the Oracle pass - * 19 You met Quincy and talked to him about the Bishop - * 20 - * 21 You Killed the Bishop! - * 22 The Oracle has told you to kill Macil - * 23 You've Killed The Oracle! - * 24 You Killed Macil! - * 25 You've destroyed the Converter! - * 26 You've Killed The Loremaster! - * 27 You've Blown Up the Computer - * 28 You got the catacomb key - * 29 You destroyed the mind control device in the mines - * 30 - * 31 - */ - -#include "a_pickups.h" -#include "a_strifeglobal.h" - -FState AQuestItem::States[] = -{ - S_NORMAL (TOKN, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AQuestItem, Strife, -1, 0) - PROP_SpawnState (0) -END_DEFAULTS - -// Quest Item 1 ------------------------------------------------------------- - -class AQuestItem1 : public AQuestItem -{ - DECLARE_STATELESS_ACTOR (AQuestItem1, AQuestItem) -}; - -IMPLEMENT_STATELESS_ACTOR (AQuestItem1, Strife, -1, 0) - PROP_StrifeType (312) - PROP_StrifeTeaserType (293) - PROP_StrifeTeaserType2 (310) -END_DEFAULTS - -// Quest Item 2 ------------------------------------------------------------- - -class AQuestItem2 : public AQuestItem -{ - DECLARE_STATELESS_ACTOR (AQuestItem2, AQuestItem) -}; - -IMPLEMENT_STATELESS_ACTOR (AQuestItem2, Strife, -1, 0) - PROP_StrifeType (313) - PROP_StrifeTeaserType (294) - PROP_StrifeTeaserType2 (311) - // "Blown_Up_the_Crystal" in the Teaser -END_DEFAULTS - -// Quest Item 3 ------------------------------------------------------------- - -class AQuestItem3 : public AQuestItem -{ - DECLARE_STATELESS_ACTOR (AQuestItem3, AQuestItem) -}; - -IMPLEMENT_STATELESS_ACTOR (AQuestItem3, Strife, -1, 0) - PROP_StrifeType (314) - PROP_StrifeTeaserType (295) - PROP_StrifeTeaserType2 (312) - // "Blown_Up_the_Gates" in the Teaser -END_DEFAULTS - -// Quest Item 4 ------------------------------------------------------------- - -class AQuestItem4 : public AQuestItem -{ - DECLARE_STATELESS_ACTOR (AQuestItem4, AQuestItem) -}; - -IMPLEMENT_STATELESS_ACTOR (AQuestItem4, Strife, -1, 0) - PROP_StrifeType (315) - PROP_StrifeTeaserType (296) - PROP_StrifeTeaserType2 (313) - PROP_Tag ("quest4") -END_DEFAULTS - -// Quest Item 5 ------------------------------------------------------------- - -class AQuestItem5 : public AQuestItem -{ - DECLARE_STATELESS_ACTOR (AQuestItem5, AQuestItem) -}; - -IMPLEMENT_STATELESS_ACTOR (AQuestItem5, Strife, -1, 0) - PROP_StrifeType (316) - PROP_StrifeTeaserType (297) - PROP_StrifeTeaserType2 (314) - PROP_Tag ("quest5") -END_DEFAULTS - -// Quest Item 6 ------------------------------------------------------------- - -class AQuestItem6 : public AQuestItem -{ - DECLARE_STATELESS_ACTOR (AQuestItem6, AQuestItem) -}; - -IMPLEMENT_STATELESS_ACTOR (AQuestItem6, Strife, -1, 0) - PROP_StrifeType (317) - PROP_StrifeTeaserType (298) - PROP_StrifeTeaserType2 (315) - PROP_Tag ("quest6") -END_DEFAULTS - -// Quest Item 7 ------------------------------------------------------------- - -class AQuestItem7 : public AQuestItem -{ - DECLARE_STATELESS_ACTOR (AQuestItem7, AQuestItem) -}; - -IMPLEMENT_STATELESS_ACTOR (AQuestItem7, Strife, -1, 0) - PROP_StrifeType (318) -END_DEFAULTS - -// Quest Item 8 ------------------------------------------------------------- - -class AQuestItem8 : public AQuestItem -{ - DECLARE_STATELESS_ACTOR (AQuestItem8, AQuestItem) -}; - -IMPLEMENT_STATELESS_ACTOR (AQuestItem8, Strife, -1, 0) - PROP_StrifeType (319) -END_DEFAULTS - -// Quest Item 9 ------------------------------------------------------------- - -class AQuestItem9 : public AQuestItem -{ - DECLARE_STATELESS_ACTOR (AQuestItem9, AQuestItem) -}; - -IMPLEMENT_STATELESS_ACTOR (AQuestItem9, Strife, -1, 0) - PROP_StrifeType (320) -END_DEFAULTS - -// Quest Item 10 ------------------------------------------------------------ - -class AQuestItem10 : public AQuestItem -{ - DECLARE_STATELESS_ACTOR (AQuestItem10, AQuestItem) -}; - -IMPLEMENT_STATELESS_ACTOR (AQuestItem10, Strife, -1, 0) - PROP_StrifeType (321) -END_DEFAULTS - -// Quest Item 11 ------------------------------------------------------------ - -class AQuestItem11 : public AQuestItem -{ - DECLARE_STATELESS_ACTOR (AQuestItem11, AQuestItem) -}; - -IMPLEMENT_STATELESS_ACTOR (AQuestItem11, Strife, -1, 0) - PROP_StrifeType (322) -END_DEFAULTS - -// Quest Item 12 ------------------------------------------------------------ - -class AQuestItem12 : public AQuestItem -{ - DECLARE_STATELESS_ACTOR (AQuestItem12, AQuestItem) -}; - -IMPLEMENT_STATELESS_ACTOR (AQuestItem12, Strife, -1, 0) - PROP_StrifeType (323) -END_DEFAULTS - -// Quest Item 13 ------------------------------------------------------------ - -class AQuestItem13 : public AQuestItem -{ - DECLARE_STATELESS_ACTOR (AQuestItem13, AQuestItem) -}; - -IMPLEMENT_STATELESS_ACTOR (AQuestItem13, Strife, -1, 0) - PROP_StrifeType (324) -END_DEFAULTS - -// Quest Item 14 ------------------------------------------------------------ - -class AQuestItem14 : public AQuestItem -{ - DECLARE_STATELESS_ACTOR (AQuestItem14, AQuestItem) -}; - -IMPLEMENT_STATELESS_ACTOR (AQuestItem14, Strife, -1, 0) - PROP_StrifeType (325) - PROP_Tag ("You've_Blown_Up_the_Crystal") -END_DEFAULTS - -// Quest Item 15 ------------------------------------------------------------ - -class AQuestItem15 : public AQuestItem -{ - DECLARE_STATELESS_ACTOR (AQuestItem15, AQuestItem) -}; - -IMPLEMENT_STATELESS_ACTOR (AQuestItem15, Strife, -1, 0) - PROP_StrifeType (326) -END_DEFAULTS - -// Quest Item 16 ------------------------------------------------------------ - -class AQuestItem16 : public AQuestItem -{ - DECLARE_STATELESS_ACTOR (AQuestItem16, AQuestItem) -}; - -IMPLEMENT_STATELESS_ACTOR (AQuestItem16, Strife, -1, 0) - PROP_StrifeType (327) - PROP_Tag ("You've_Blown_Up_the_Gates") -END_DEFAULTS - -// Quest Item 17 ------------------------------------------------------------ - -class AQuestItem17 : public AQuestItem -{ - DECLARE_STATELESS_ACTOR (AQuestItem17, AQuestItem) -}; - -IMPLEMENT_STATELESS_ACTOR (AQuestItem17, Strife, -1, 0) - PROP_StrifeType (328) -END_DEFAULTS - -// Quest Item 18 ------------------------------------------------------------ - -class AQuestItem18 : public AQuestItem -{ - DECLARE_STATELESS_ACTOR (AQuestItem18, AQuestItem) -}; - -IMPLEMENT_STATELESS_ACTOR (AQuestItem18, Strife, -1, 0) - PROP_StrifeType (329) -END_DEFAULTS - -// Quest Item 19 ------------------------------------------------------------ - -class AQuestItem19 : public AQuestItem -{ - DECLARE_STATELESS_ACTOR (AQuestItem19, AQuestItem) -}; - -IMPLEMENT_STATELESS_ACTOR (AQuestItem19, Strife, -1, 0) - PROP_StrifeType (330) -END_DEFAULTS - -// Quest Item 20 ------------------------------------------------------------ - -class AQuestItem20 : public AQuestItem -{ - DECLARE_STATELESS_ACTOR (AQuestItem20, AQuestItem) -}; - -IMPLEMENT_STATELESS_ACTOR (AQuestItem20, Strife, -1, 0) - PROP_StrifeType (331) -END_DEFAULTS - -// Quest Item 21 ------------------------------------------------------------ - -class AQuestItem21 : public AQuestItem -{ - DECLARE_STATELESS_ACTOR (AQuestItem21, AQuestItem) -}; - -IMPLEMENT_STATELESS_ACTOR (AQuestItem21, Strife, -1, 0) - PROP_StrifeType (332) - PROP_Tag ("You_Killed_the_Bishop!") -END_DEFAULTS - -// Quest Item 22 ------------------------------------------------------------ - -class AQuestItem22 : public AQuestItem -{ - DECLARE_STATELESS_ACTOR (AQuestItem22, AQuestItem) -}; - -IMPLEMENT_STATELESS_ACTOR (AQuestItem22, Strife, -1, 0) - PROP_StrifeType (333) -END_DEFAULTS - -// Quest Item 23 ------------------------------------------------------------ - -class AQuestItem23 : public AQuestItem -{ - DECLARE_STATELESS_ACTOR (AQuestItem23, AQuestItem) -}; - -IMPLEMENT_STATELESS_ACTOR (AQuestItem23, Strife, -1, 0) - PROP_StrifeType (334) - PROP_Tag ("You've_Killed_The_Oracle!") -END_DEFAULTS - -// Quest Item 24 ------------------------------------------------------------ - -class AQuestItem24 : public AQuestItem -{ - DECLARE_STATELESS_ACTOR (AQuestItem24, AQuestItem) -}; - -IMPLEMENT_STATELESS_ACTOR (AQuestItem24, Strife, -1, 0) - PROP_StrifeType (335) - PROP_Tag ("You_Killed_Macil!") -END_DEFAULTS - -// Quest Item 25 ------------------------------------------------------------ - -class AQuestItem25 : public AQuestItem -{ - DECLARE_STATELESS_ACTOR (AQuestItem25, AQuestItem) -}; - -IMPLEMENT_STATELESS_ACTOR (AQuestItem25, Strife, -1, 0) - PROP_StrifeType (336) -END_DEFAULTS - -// Quest Item 26 ------------------------------------------------------------ - -class AQuestItem26 : public AQuestItem -{ - DECLARE_STATELESS_ACTOR (AQuestItem26, AQuestItem) -}; - -IMPLEMENT_STATELESS_ACTOR (AQuestItem26, Strife, -1, 0) - PROP_StrifeType (337) - PROP_Tag ("You've_Killed_The_Loremaster!") -END_DEFAULTS - -// Quest Item 27 ------------------------------------------------------------ - -class AQuestItem27 : public AQuestItem -{ - DECLARE_STATELESS_ACTOR (AQuestItem27, AQuestItem) -}; - -IMPLEMENT_STATELESS_ACTOR (AQuestItem27, Strife, -1, 0) - PROP_StrifeType (338) - PROP_Tag ("You've_Blown_Up_the_Computer") -END_DEFAULTS - -// Quest Item 28 ------------------------------------------------------------ - -class AQuestItem28 : public AQuestItem -{ - DECLARE_STATELESS_ACTOR (AQuestItem28, AQuestItem) -}; - -IMPLEMENT_STATELESS_ACTOR (AQuestItem28, Strife, -1, 0) - PROP_StrifeType (339) -END_DEFAULTS - -// Quest Item 29 ------------------------------------------------------------ - -class AQuestItem29 : public AQuestItem -{ - DECLARE_STATELESS_ACTOR (AQuestItem29, AQuestItem) -}; - -IMPLEMENT_STATELESS_ACTOR (AQuestItem29, Strife, -1, 0) - PROP_StrifeType (340) -END_DEFAULTS - -// Quest Item 30 ------------------------------------------------------------ - -class AQuestItem30 : public AQuestItem -{ - DECLARE_STATELESS_ACTOR (AQuestItem30, AQuestItem) -}; - -IMPLEMENT_STATELESS_ACTOR (AQuestItem30, Strife, -1, 0) - PROP_StrifeType (341) -END_DEFAULTS - -// Quest Item 31 ------------------------------------------------------------ - -class AQuestItem31 : public AQuestItem -{ - DECLARE_STATELESS_ACTOR (AQuestItem31, AQuestItem) -}; - -IMPLEMENT_STATELESS_ACTOR (AQuestItem31, Strife, -1, 0) - PROP_StrifeType (342) -END_DEFAULTS - -// Quest Item Class Pointers ------------------------------------------------ - -const TypeInfo *QuestItemClasses[31] = -{ - RUNTIME_CLASS(AQuestItem1), - RUNTIME_CLASS(AQuestItem2), - RUNTIME_CLASS(AQuestItem3), - RUNTIME_CLASS(AQuestItem4), - RUNTIME_CLASS(AQuestItem5), - RUNTIME_CLASS(AQuestItem6), - RUNTIME_CLASS(AQuestItem7), - RUNTIME_CLASS(AQuestItem8), - RUNTIME_CLASS(AQuestItem9), - RUNTIME_CLASS(AQuestItem10), - RUNTIME_CLASS(AQuestItem11), - RUNTIME_CLASS(AQuestItem12), - RUNTIME_CLASS(AQuestItem13), - RUNTIME_CLASS(AQuestItem14), - RUNTIME_CLASS(AQuestItem15), - RUNTIME_CLASS(AQuestItem16), - RUNTIME_CLASS(AQuestItem17), - RUNTIME_CLASS(AQuestItem18), - RUNTIME_CLASS(AQuestItem19), - RUNTIME_CLASS(AQuestItem20), - RUNTIME_CLASS(AQuestItem21), - RUNTIME_CLASS(AQuestItem22), - RUNTIME_CLASS(AQuestItem23), - RUNTIME_CLASS(AQuestItem24), - RUNTIME_CLASS(AQuestItem25), - RUNTIME_CLASS(AQuestItem26), - RUNTIME_CLASS(AQuestItem27), - RUNTIME_CLASS(AQuestItem28), - RUNTIME_CLASS(AQuestItem29), - RUNTIME_CLASS(AQuestItem30), - RUNTIME_CLASS(AQuestItem31) -}; diff --git a/src/g_strife/a_ratbuddy.cpp b/src/g_strife/a_ratbuddy.cpp deleted file mode 100644 index 31e854bb1..000000000 --- a/src/g_strife/a_ratbuddy.cpp +++ /dev/null @@ -1,53 +0,0 @@ -#include "actor.h" -#include "p_enemy.h" - -// Rat Buddy ---------------------------------------------------------------- - -class ARatBuddy : public AActor -{ - DECLARE_ACTOR (ARatBuddy, AActor) -}; - -FState ARatBuddy::States[] = -{ -#define S_RAT_STAND 0 - S_NORMAL (RATT, 'A', 10, A_Look, &States[S_RAT_STAND]), - -#define S_RAT_CHASE (S_RAT_STAND+1) - S_NORMAL (RATT, 'A', 4, A_Chase, &States[S_RAT_CHASE+1]), - S_NORMAL (RATT, 'A', 4, A_Chase, &States[S_RAT_CHASE+2]), - S_NORMAL (RATT, 'B', 4, A_Chase, &States[S_RAT_CHASE+3]), - S_NORMAL (RATT, 'B', 4, A_Chase, &States[S_RAT_CHASE]), - -#define S_RAT_WANDER (S_RAT_CHASE+4) - S_NORMAL (RATT, 'A', 8, A_Wander, &States[S_RAT_WANDER+1]), - S_NORMAL (RATT, 'B', 4, A_Wander, &States[S_RAT_CHASE]), - -#define S_RAT_DIE (S_RAT_WANDER+2) - S_NORMAL (MEAT, 'Q', 700, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ARatBuddy, Strife, 85, 0) - PROP_StrifeType (202) - PROP_StrifeTeaserType (196) - PROP_StrifeTeaserType2 (200) - PROP_SpawnHealth (5) - PROP_SpawnState (S_RAT_STAND) - PROP_SeeState (S_RAT_CHASE) - PROP_MeleeState (S_RAT_WANDER) - PROP_DeathState (S_RAT_DIE) - PROP_SpeedFixed (13) - PROP_RadiusFixed (10) - PROP_HeightFixed (16) - PROP_Flags (MF_NOBLOOD) - PROP_Flags2 (MF2_FLOORCLIP|MF2_PASSMOBJ) - PROP_Flags3 (MF3_ISMONSTER) - PROP_Flags4 (MF4_INCOMBAT) - PROP_MinMissileChance (150) - PROP_MaxStepHeight (16) - PROP_MaxDropOffHeight (32) - PROP_Tag ("rat_buddy") - PROP_SeeSound ("rat/sight") - PROP_DeathSound ("rat/death") - PROP_ActiveSound ("rat/active") -END_DEFAULTS diff --git a/src/g_strife/a_strifearmor.cpp b/src/g_strife/a_strifearmor.cpp deleted file mode 100644 index f4ae34e71..000000000 --- a/src/g_strife/a_strifearmor.cpp +++ /dev/null @@ -1,69 +0,0 @@ -#include "a_pickups.h" - -// Metal Armor -------------------------------------------------------------- - -class AMetalArmor : public ABasicArmorPickup -{ - DECLARE_ACTOR (AMetalArmor, ABasicArmorPickup) -public: - virtual const char *PickupMessage () - { - return "You picked up the Metal Armor."; - } -}; - -FState AMetalArmor::States[] = -{ - S_NORMAL (ARM3, 'A', -1, NULL, NULL), -}; - -IMPLEMENT_ACTOR (AMetalArmor, Strife, 2019, 69) - PROP_RadiusFixed (20) - PROP_HeightFixed (16) - PROP_Flags (MF_SPECIAL) - PROP_Flags2 (MF2_FLOORCLIP) - PROP_SpawnState (0) - PROP_Inventory_MaxAmount (3) - PROP_Inventory_FlagsSet (IF_AUTOACTIVATE|IF_INVBAR) - PROP_StrifeType (129) - PROP_StrifeTeaserType (125) - PROP_StrifeTeaserType2 (128) - PROP_BasicArmorPickup_SaveAmount (200) - PROP_BasicArmorPickup_SavePercent (FRACUNIT/2) - PROP_Inventory_Icon ("I_ARM1") - PROP_Tag ("Metal_Armor") -END_DEFAULTS - -// Leather Armor ------------------------------------------------------------ - -class ALeatherArmor : public ABasicArmorPickup -{ - DECLARE_ACTOR (ALeatherArmor, ABasicArmorPickup) -public: - virtual const char *PickupMessage () - { - return "You picked up the Leather Armor."; - } -}; - -FState ALeatherArmor::States[] = -{ - S_NORMAL (ARM4, 'A', -1, NULL, NULL), -}; - -IMPLEMENT_ACTOR (ALeatherArmor, Strife, 2018, 68) - PROP_RadiusFixed (20) - PROP_HeightFixed (16) - PROP_Flags (MF_SPECIAL) - PROP_Flags2 (MF2_FLOORCLIP) - PROP_SpawnState (0) - PROP_Inventory_MaxAmount (5) - PROP_Inventory_FlagsSet (IF_AUTOACTIVATE|IF_INVBAR) - PROP_StrifeType (130) - PROP_StrifeTeaserType (126) - PROP_StrifeTeaserType2 (129) - PROP_BasicArmorPickup_SaveAmount (100) - PROP_BasicArmorPickup_SavePercent (FRACUNIT/3) - PROP_Inventory_Icon ("I_ARM2") - PROP_Tag ("Leather_Armor") -END_DEFAULTS diff --git a/src/g_strife/a_strifeglobal.h b/src/g_strife/a_strifeglobal.h index 1ccbae02d..c9c15e532 100644 --- a/src/g_strife/a_strifeglobal.h +++ b/src/g_strife/a_strifeglobal.h @@ -55,11 +55,6 @@ public: AInventory *CreateCopy (AActor *other); }; -class AQuestItem : public AInventory -{ - DECLARE_ACTOR (AQuestItem, AInventory) -}; - class AOracle : public AActor { DECLARE_ACTOR (AOracle, AActor) diff --git a/src/g_strife/a_strifeitems.cpp b/src/g_strife/a_strifeitems.cpp index 5f61912d8..c268528ee 100644 --- a/src/g_strife/a_strifeitems.cpp +++ b/src/g_strife/a_strifeitems.cpp @@ -10,136 +10,7 @@ #include "s_sound.h" #include "a_strifeweaps.h" #include "d_event.h" - -// Med patch ----------------------------------------------------------------- - -class AMedPatch : public AHealthPickup -{ - DECLARE_ACTOR (AMedPatch, AHealthPickup); -protected: - const char *PickupMessage (); -}; - -FState AMedPatch::States[] = -{ - S_NORMAL (STMP, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AMedPatch, Strife, 2011, 0) - PROP_SpawnHealth (10) - PROP_SpawnState (0) - PROP_StrifeType (125) - PROP_StrifeTeaserType (121) - PROP_StrifeTeaserType2 (124) - PROP_Flags (MF_SPECIAL) - PROP_Flags2 (MF2_FLOORCLIP) - PROP_Inventory_MaxAmount (20) - PROP_Tag ("Med_patch") - PROP_Inventory_Icon ("I_STMP") -END_DEFAULTS - -const char *AMedPatch::PickupMessage () -{ - return "You picked up the Med patch."; -} - -// Medical Kit --------------------------------------------------------------- - -class AMedicalKit : public AHealthPickup -{ - DECLARE_ACTOR (AMedicalKit, AHealthPickup); -protected: - const char *PickupMessage (); -}; - -FState AMedicalKit::States[] = -{ - S_NORMAL (MDKT, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AMedicalKit, Strife, 2012, 0) - PROP_SpawnHealth (25) - PROP_SpawnState (0) - PROP_StrifeType (126) - PROP_StrifeTeaserType (122) - PROP_StrifeTeaserType2 (125) - PROP_Flags (MF_SPECIAL) - PROP_Flags2 (MF2_FLOORCLIP) - PROP_Inventory_MaxAmount (15) - PROP_Tag ("Medical_kit") - PROP_Inventory_Icon ("I_MDKT") -END_DEFAULTS - -const char *AMedicalKit::PickupMessage () -{ - return "You picked up the Medical kit."; -} - -// Surgery Kit -------------------------------------------------------------- - -class ASurgeryKit : public AHealthPickup -{ - DECLARE_ACTOR (ASurgeryKit, AHealthPickup); -protected: - const char *PickupMessage (); - bool Use (bool pickup); -}; - -FState ASurgeryKit::States[] = -{ - S_NORMAL (FULL, 'A', 35, NULL, &States[1]), - S_NORMAL (FULL, 'B', 35, NULL, &States[0]) -}; - -IMPLEMENT_ACTOR (ASurgeryKit, Strife, 83, 0) - PROP_SpawnState (0) - PROP_StrifeType (127) - PROP_StrifeTeaserType (123) - PROP_StrifeTeaserType2 (126) - PROP_Flags (MF_SPECIAL) - PROP_Flags2 (MF2_FLOORCLIP) - PROP_Inventory_MaxAmount (5) - PROP_Tag ("Surgery_Kit") // "full_health" in the Teaser - PROP_Inventory_Icon ("I_FULL") -END_DEFAULTS - -const char *ASurgeryKit::PickupMessage () -{ - return "You picked up the Surgery Kit."; -} - -bool ASurgeryKit::Use (bool pickup) -{ - return P_GiveBody (Owner, -100); -} - -// StrifeMap ---------------------------------------------------------------- - -class AStrifeMap : public AMapRevealer -{ - DECLARE_ACTOR (AStrifeMap, AMapRevealer) -protected: - virtual const char *PickupMessage () - { - return "You picked up the map"; - } -}; - -FState AStrifeMap::States[] = -{ - S_BRIGHT (SMAP, 'A', 6, NULL , &States[1]), - S_BRIGHT (SMAP, 'B', 6, NULL , &States[0]), -}; - -IMPLEMENT_ACTOR (AStrifeMap, Strife, 2026, 137) - PROP_Flags (MF_SPECIAL) - PROP_Flags2 (MF2_FLOORCLIP) - PROP_SpawnState (0) - PROP_StrifeType (164) - PROP_StrifeTeaserType (160) - PROP_StrifeTeaserType2 (163) - PROP_Inventory_PickupSound ("misc/p_pkup") -END_DEFAULTS +#include "a_keys.h" // Degnin Ore --------------------------------------------------------------- @@ -235,357 +106,6 @@ bool ADegninOre::Use (bool pickup) } } -// Beldin's Ring ------------------------------------------------------------ - -class ABeldinsRing : public AInventory -{ - DECLARE_ACTOR (ABeldinsRing, AInventory) -public: - bool TryPickup (AActor *toucher); - const char *PickupMessage (); -}; - -FState ABeldinsRing::States[] = -{ - S_NORMAL (RING, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ABeldinsRing, Strife, -1, 0) - PROP_SpawnState (0) - PROP_Flags (MF_SPECIAL|MF_NOTDMATCH) - PROP_Flags2 (MF2_FLOORCLIP) - PROP_StrifeType (173) - PROP_StrifeTeaserType (165) - PROP_StrifeTeaserType2 (169) - PROP_Inventory_FlagsSet (IF_INVBAR) - PROP_Tag ("ring") - PROP_Inventory_Icon ("I_RING") -END_DEFAULTS - -bool ABeldinsRing::TryPickup (AActor *toucher) -{ - if (Super::TryPickup (toucher)) - { - toucher->GiveInventoryType (QuestItemClasses[0]); - return true; - } - return false; -} - -const char *ABeldinsRing::PickupMessage () -{ - return "You picked up the ring."; -} - -// Offering Chalice --------------------------------------------------------- - -class AOfferingChalice : public AInventory -{ - DECLARE_ACTOR (AOfferingChalice, AInventory) -public: - bool TryPickup (AActor *toucher); - const char *PickupMessage (); -}; - -FState AOfferingChalice::States[] = -{ - S_BRIGHT (RELC, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AOfferingChalice, Strife, 205, 0) - PROP_StrifeType (174) - PROP_StrifeTeaserType (166) - PROP_StrifeTeaserType2 (170) - PROP_SpawnState (0) - PROP_RadiusFixed (10) - PROP_HeightFixed (16) - PROP_Flags (MF_SPECIAL|MF_DROPPED) - PROP_Flags2 (MF2_FLOORCLIP) - PROP_Inventory_FlagsSet (IF_INVBAR) - PROP_Tag ("Offering_Chalice") - PROP_Inventory_Icon ("I_RELC") -END_DEFAULTS - -bool AOfferingChalice::TryPickup (AActor *toucher) -{ - if (Super::TryPickup (toucher)) - { - toucher->GiveInventoryType (QuestItemClasses[1]); - return true; - } - return false; -} - -const char *AOfferingChalice::PickupMessage () -{ - return "You picked up the Offering Chalice."; -} - -// Ear ---------------------------------------------------------------------- - -class AEar : public AInventory -{ - DECLARE_ACTOR (AEar, AInventory) -public: - bool TryPickup (AActor *toucher); - const char *PickupMessage (); -}; - -FState AEar::States[] = -{ - S_NORMAL (EARS, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AEar, Strife, -1, 0) - PROP_StrifeType (175) - PROP_StrifeTeaserType (167) - PROP_StrifeTeaserType2 (171) - PROP_SpawnState (0) - PROP_Flags (MF_SPECIAL) - PROP_Flags2 (MF2_FLOORCLIP) - PROP_Inventory_FlagsSet (IF_INVBAR) - PROP_Tag ("ear") - PROP_Inventory_Icon ("I_EARS") -END_DEFAULTS - -bool AEar::TryPickup (AActor *toucher) -{ - if (Super::TryPickup (toucher)) - { - toucher->GiveInventoryType (QuestItemClasses[8]); - return true; - } - return false; -} - -const char *AEar::PickupMessage () -{ - return "You picked up the ear."; -} - -// Broken Power Coupling ---------------------------------------------------- - -class ABrokenPowerCoupling : public AInventory -{ - DECLARE_ACTOR (ABrokenPowerCoupling, AInventory) -public: - bool TryPickup (AActor *toucher); - const char *PickupMessage (); -}; - -FState ABrokenPowerCoupling::States[] = -{ - S_NORMAL (COUP, 'C', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ABrokenPowerCoupling, Strife, 226, 0) - PROP_StrifeType (289) - PROP_SpawnHealth (40) - PROP_SpawnState (0) - PROP_Inventory_FlagsSet (IF_INVBAR) - PROP_RadiusFixed (16) - PROP_HeightFixed (16) - PROP_Inventory_MaxAmount (1) - PROP_Flags (MF_SPECIAL|MF_DROPPED) - PROP_Flags2 (MF2_FLOORCLIP) - PROP_Tag ("BROKEN_POWER_COUPLING") - PROP_Inventory_Icon ("I_COUP") -END_DEFAULTS - -bool ABrokenPowerCoupling::TryPickup (AActor *toucher) -{ - if (Super::TryPickup (toucher)) - { - toucher->GiveInventoryType (QuestItemClasses[7]); - return true; - } - return false; -} - -const char *ABrokenPowerCoupling::PickupMessage () -{ - return "You picked up the broken power coupling."; -} - -// Shadow Armor ------------------------------------------------------------- - -void A_ClearShadow (AActor *); -void A_BeShadowyFoe (AActor *); -void A_SetShadow (AActor *); - -class AShadowArmor : public APowerupGiver -{ - DECLARE_ACTOR (AShadowArmor, APowerupGiver) -public: - const char *PickupMessage (); -}; - -FState AShadowArmor::States[] = -{ - S_BRIGHT (SHD1, 'A', 17, A_ClearShadow, &States[1]), - S_BRIGHT (SHD1, 'A', 17, A_BeShadowyFoe, &States[2]), - S_BRIGHT (SHD1, 'A', 17, A_SetShadow, &States[3]), - S_BRIGHT (SHD1, 'A', 17, A_BeShadowyFoe, &States[0]) -}; - -IMPLEMENT_ACTOR (AShadowArmor, Strife, 2024, 135) - PROP_StrifeType (160) - PROP_StrifeTeaserType (156) - PROP_StrifeTeaserType2 (159) - PROP_Flags (MF_SPECIAL) - PROP_Flags2 (MF2_FLOORCLIP) - PROP_SpawnState (0) - PROP_Inventory_MaxAmount (2) - PROP_Inventory_FlagsClear (IF_FANCYPICKUPSOUND) - PROP_PowerupGiver_Powerup ("PowerShadow") - PROP_Tag ("Shadow_armor") - PROP_Inventory_Icon ("I_SHD1") - PROP_Inventory_PickupSound ("misc/i_pkup") -END_DEFAULTS - -const char *AShadowArmor::PickupMessage () -{ - return "You picked up the Shadow armor."; -} - -// Environmental suit ------------------------------------------------------- - -class AEnvironmentalSuit : public APowerupGiver -{ - DECLARE_ACTOR (AEnvironmentalSuit, APowerupGiver) -public: - const char *PickupMessage (); -}; - -FState AEnvironmentalSuit::States[] = -{ - S_BRIGHT (MASK, 'A', -1, NULL , NULL) -}; - -IMPLEMENT_ACTOR (AEnvironmentalSuit, Strife, 2025, 136) - PROP_StrifeType (161) - PROP_StrifeTeaserType (157) - PROP_StrifeTeaserType2 (160) - PROP_Flags (MF_SPECIAL) - PROP_Flags2 (MF2_FLOORCLIP) - PROP_SpawnState (0) - PROP_Inventory_MaxAmount (5) - PROP_Inventory_FlagsClear (IF_FANCYPICKUPSOUND) - PROP_PowerupGiver_Powerup ("PowerMask") - PROP_Tag ("Environmental_Suit") - PROP_Inventory_Icon ("I_MASK") - PROP_Inventory_PickupSound ("misc/i_pkup") -END_DEFAULTS - -const char *AEnvironmentalSuit::PickupMessage () -{ - return "You picked up the Environmental Suit."; -} - -// Guard Uniform ------------------------------------------------------------ - -class AGuardUniform : public AInventory -{ - DECLARE_ACTOR (AGuardUniform, AInventory) -public: - bool TryPickup (AActor *toucher); - const char *PickupMessage (); -}; - -FState AGuardUniform::States[] = -{ - S_NORMAL (UNIF, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AGuardUniform, Strife, 90, 0) - PROP_StrifeType (162) - PROP_StrifeTeaserType (158) - PROP_StrifeTeaserType2 (161) - PROP_SpawnState (0) - PROP_Flags (MF_SPECIAL) - PROP_Flags2 (MF2_FLOORCLIP) - PROP_Inventory_FlagsSet (IF_INVBAR) - PROP_Tag ("Guard_Uniform") - PROP_Inventory_Icon ("I_UNIF") -END_DEFAULTS - -bool AGuardUniform::TryPickup (AActor *toucher) -{ - if (Super::TryPickup (toucher)) - { - toucher->GiveInventoryType (QuestItemClasses[14]); - return true; - } - return false; -} - -const char *AGuardUniform::PickupMessage () -{ - return "You picked up the Guard Uniform."; -} - -// Officer's Uniform -------------------------------------------------------- - -class AOfficersUniform : public AInventory -{ - DECLARE_ACTOR (AOfficersUniform, AInventory) -public: - const char *PickupMessage (); -}; - -FState AOfficersUniform::States[] = -{ - S_NORMAL (OFIC, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AOfficersUniform, Strife, 52, 0) - PROP_StrifeType (163) - PROP_StrifeTeaserType (159) - PROP_StrifeTeaserType2 (162) - PROP_SpawnState (0) - PROP_Flags (MF_SPECIAL) - PROP_Flags2 (MF2_FLOORCLIP) - PROP_Inventory_FlagsSet (IF_INVBAR) - PROP_Tag ("Officer's_Uniform") - PROP_Inventory_Icon ("I_OFIC") -END_DEFAULTS - -const char *AOfficersUniform::PickupMessage () -{ - return "You picked up the Officer's Uniform."; -} - -// InterrogatorReport ------------------------------------------------------- -// SCRIPT32 in strife0.wad has an Acolyte that drops this, but I couldn't -// find that Acolyte in the map. It seems to be totally unused in the -// final game. - -class AInterrogatorReport : public AInventory -{ - DECLARE_ACTOR (AInterrogatorReport, AInventory) -public: - const char *PickupMessage (); -}; - -FState AInterrogatorReport::States[] = -{ - S_NORMAL (TOKN, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AInterrogatorReport, Strife, -1, 0) - PROP_StrifeType (308) - PROP_StrifeTeaserType (289) - PROP_StrifeTeaserType2 (306) - PROP_Flags (MF_SPECIAL) - PROP_Flags2 (MF2_FLOORCLIP) - PROP_Tag ("report") -END_DEFAULTS - -const char *AInterrogatorReport::PickupMessage () -{ - return "You picked up the report."; -} - // Gun Training ------------------------------------------------------------- class AGunTraining : public AInventory @@ -653,71 +173,6 @@ bool AHealthTraining::TryPickup (AActor *toucher) return false; } -// Info --------------------------------------------------------------------- - -class AInfo : public AInventory -{ - DECLARE_ACTOR (AInfo, AInventory) -public: - const char *PickupMessage (); -}; - -FState AInfo::States[] = -{ - S_NORMAL (TOKN, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AInfo, Strife, -1, 0) - PROP_StrifeType (300) - PROP_StrifeTeaserType (282) - PROP_StrifeTeaserType2 (299) - PROP_SpawnState (0) - PROP_Flags (MF_SPECIAL) - PROP_Flags2 (MF2_FLOORCLIP) - PROP_Inventory_FlagsSet (IF_INVBAR) - PROP_Tag ("info") - PROP_Inventory_Icon ("I_TOKN") -END_DEFAULTS - -const char *AInfo::PickupMessage () -{ - return "You picked up the info."; -} - -// Targeter ----------------------------------------------------------------- - -class ATargeter : public APowerupGiver -{ - DECLARE_ACTOR (ATargeter, APowerupGiver) -public: - const char *PickupMessage (); -}; - -FState ATargeter::States[] = -{ - S_NORMAL (TARG, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ATargeter, Strife, 207, 0) - PROP_StrifeType (167) - PROP_StrifeTeaserType (169) - PROP_StrifeTeaserType2 (173) - PROP_SpawnState (0) - PROP_Flags (MF_SPECIAL) - PROP_Flags2 (MF2_FLOORCLIP) - PROP_Inventory_MaxAmount (5) - PROP_Inventory_FlagsClear (IF_FANCYPICKUPSOUND) - PROP_Tag ("Targeter") - PROP_Inventory_Icon ("I_TARG") - PROP_PowerupGiver_Powerup ("PowerTargeter") - PROP_Inventory_PickupSound ("misc/i_pkup") -END_DEFAULTS - -const char *ATargeter::PickupMessage () -{ - return "You picked up the Targeter."; -} - // Scanner ------------------------------------------------------------------ class AScanner : public APowerupGiver @@ -765,6 +220,62 @@ bool AScanner::Use (bool pickup) return Super::Use (pickup); } +// Prison Pass -------------------------------------------------------------- + +class APrisonPass : public AKey +{ + DECLARE_ACTOR (APrisonPass, AKey) +public: + bool TryPickup (AActor *toucher); + bool SpecialDropAction (AActor *dropper); + const char *PickupMessage (); +}; + +FState APrisonPass::States[] = +{ + S_NORMAL (TOKN, 'A', -1, NULL, NULL) +}; + +IMPLEMENT_ACTOR (APrisonPass, Strife, -1, 0) + PROP_StrifeType (304) + PROP_StrifeTeaserType (286) + PROP_StrifeTeaserType2 (303) + PROP_SpawnState (0) + PROP_Inventory_Icon ("I_TOKN") + PROP_Tag ("Prison_pass") +END_DEFAULTS + +bool APrisonPass::TryPickup (AActor *toucher) +{ + Super::TryPickup (toucher); + EV_DoDoor (DDoor::doorOpen, NULL, toucher, 223, 2*FRACUNIT, 0, 0, 0); + toucher->GiveInventoryType (QuestItemClasses[9]); + return true; +} + +const char *APrisonPass::PickupMessage () +{ + return "You picked up the Prison pass."; +} + +//============================================================================ +// +// APrisonPass :: SpecialDropAction +// +// Trying to make a monster that drops a prison pass turns it into an +// OpenDoor223 item instead. That means the only way to get it in Strife +// is through dialog, which is why it doesn't have its own sprite. +// +//============================================================================ + +bool APrisonPass::SpecialDropAction (AActor *dropper) +{ + EV_DoDoor (DDoor::doorOpen, NULL, dropper, 223, 2*FRACUNIT, 0, 0, 0); + Destroy (); + return true; +} + + //--------------------------------------------------------------------------- // Dummy items. They are just used by Strife to perform --------------------- // actions and cannot be held. ---------------------------------------------- diff --git a/src/g_strife/a_strifekeys.cpp b/src/g_strife/a_strifekeys.cpp deleted file mode 100644 index 09f36759c..000000000 --- a/src/g_strife/a_strifekeys.cpp +++ /dev/null @@ -1,895 +0,0 @@ -#include "a_keys.h" -#include "a_strifeglobal.h" -#include "p_local.h" - -IMPLEMENT_STATELESS_ACTOR (AStrifeKey, Strife, -1, 0) - PROP_RadiusFixed (20) - PROP_HeightFixed (16) - PROP_Flags (MF_SPECIAL|MF_NOTDMATCH) - PROP_Flags2 (MF2_FLOORCLIP) -END_DEFAULTS - -// Base Key ----------------------------------------------------------------- - -class ABaseKey : public AStrifeKey -{ - DECLARE_ACTOR (ABaseKey, AStrifeKey) -public: - const char *PickupMessage (); -}; - -FState ABaseKey::States[] = -{ - S_NORMAL (FUSL, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ABaseKey, Strife, 230, 0) - PROP_StrifeType (133) - PROP_StrifeTeaserType (129) - PROP_StrifeTeaserType2 (132) - PROP_SpawnState (0) - PROP_Inventory_Icon ("I_FUSL") - PROP_Tag ("Base_Key") -END_DEFAULTS - -const char *ABaseKey::PickupMessage () -{ - return "You picked up the Base Key."; -} - -// Govs Key ----------------------------------------------------------------- - -class AGovsKey : public AStrifeKey -{ - DECLARE_ACTOR (AGovsKey, AStrifeKey) -public: - const char *PickupMessage (); -}; - -FState AGovsKey::States[] = -{ - S_NORMAL (REBL, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AGovsKey, Strife, -1, 0) - PROP_StrifeType (134) - PROP_StrifeTeaserType (130) - PROP_StrifeTeaserType2 (133) - PROP_SpawnState (0) - PROP_Inventory_Icon ("I_REBL") - PROP_Tag ("Govs_Key") // "Rebel_Key" in the Teaser -END_DEFAULTS - -const char *AGovsKey::PickupMessage () -{ - return "You picked up the Govs Key."; -} - -// Passcard ----------------------------------------------------------------- - -class APasscard : public AStrifeKey -{ - DECLARE_ACTOR (APasscard, AStrifeKey) -public: - const char *PickupMessage (); -}; - -FState APasscard::States[] = -{ - S_NORMAL (TPAS, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (APasscard, Strife, 185, 0) - PROP_StrifeType (135) - PROP_StrifeTeaserType (131) - PROP_StrifeTeaserType2 (134) - PROP_SpawnState (0) - PROP_Inventory_Icon ("I_TPAS") - PROP_Tag ("Passcard") -END_DEFAULTS - -const char *APasscard::PickupMessage () -{ - return "You picked up the Passcard."; -} - -// ID Badge ----------------------------------------------------------------- - -class AIDBadge : public AStrifeKey -{ - DECLARE_ACTOR (AIDBadge, AStrifeKey) -public: - const char *PickupMessage (); -}; - -FState AIDBadge::States[] = -{ - S_NORMAL (CRD1, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AIDBadge, Strife, 184, 0) - PROP_StrifeType (136) - PROP_StrifeTeaserType (132) - PROP_StrifeTeaserType2 (135) - PROP_SpawnState (0) - PROP_Inventory_Icon ("I_CRD1") - PROP_Tag ("ID_Badge") -END_DEFAULTS - -const char *AIDBadge::PickupMessage () -{ - return "You picked up the ID Badge."; -} - -// Prison Key --------------------------------------------------------------- - -class APrisonKey : public AStrifeKey -{ - DECLARE_ACTOR (APrisonKey, AStrifeKey) -public: - bool TryPickup (AActor *toucher); - const char *PickupMessage (); -}; - -FState APrisonKey::States[] = -{ - S_NORMAL (PRIS, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (APrisonKey, Strife, -1, 0) - PROP_StrifeType (137) - PROP_StrifeTeaserType (133) - PROP_StrifeTeaserType2 (136) - PROP_SpawnState (0) - PROP_Inventory_Icon ("I_PRIS") - PROP_Tag ("Prison_Key") -END_DEFAULTS - -bool APrisonKey::TryPickup (AActor *toucher) -{ - if (Super::TryPickup (toucher)) - { - toucher->GiveInventoryType (QuestItemClasses[10]); - return true; - } - return false; -} - -const char *APrisonKey::PickupMessage () -{ - return "You picked up the Prison Key."; -} - -// Severed Hand ------------------------------------------------------------- - -class ASeveredHand : public AStrifeKey -{ - DECLARE_ACTOR (ASeveredHand, AStrifeKey) -public: - bool TryPickup (AActor *toucher); - const char *PickupMessage (); -}; - -FState ASeveredHand::States[] = -{ - S_NORMAL (HAND, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ASeveredHand, Strife, 91, 0) - PROP_StrifeType (138) - PROP_StrifeTeaserType (134) - PROP_StrifeTeaserType2 (137) - PROP_SpawnState (0) - PROP_Inventory_Icon ("I_HAND") - PROP_Tag ("Severed_Hand") -END_DEFAULTS - -bool ASeveredHand::TryPickup (AActor *toucher) -{ - if (Super::TryPickup (toucher)) - { - toucher->GiveInventoryType (QuestItemClasses[11]); - return true; - } - return false; -} - -const char *ASeveredHand::PickupMessage () -{ - return "You picked up the Severed Hand."; -} - -// Power1 Key --------------------------------------------------------------- - -class APower1Key : public AStrifeKey -{ - DECLARE_ACTOR (APower1Key, AStrifeKey) -public: - const char *PickupMessage (); -}; - -FState APower1Key::States[] = -{ - S_NORMAL (PWR1, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (APower1Key, Strife, -1, 0) - PROP_StrifeType (139) - PROP_StrifeTeaserType (135) - PROP_StrifeTeaserType2 (138) - PROP_SpawnState (0) - PROP_Inventory_Icon ("I_PWR1") - PROP_Tag ("Power1_Key") -END_DEFAULTS - -const char *APower1Key::PickupMessage () -{ - return "You picked up the Power1 Key."; -} - -// Power2 Key --------------------------------------------------------------- - -class APower2Key : public AStrifeKey -{ - DECLARE_ACTOR (APower2Key, AStrifeKey) -public: - const char *PickupMessage (); -}; - -FState APower2Key::States[] = -{ - S_NORMAL (PWR2, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (APower2Key, Strife, -1, 0) - PROP_StrifeType (140) - PROP_StrifeTeaserType (136) - PROP_StrifeTeaserType2 (139) - PROP_SpawnState (0) - PROP_Inventory_Icon ("I_PWR2") - PROP_Tag ("Power2_Key") -END_DEFAULTS - -const char *APower2Key::PickupMessage () -{ - return "You picked up the Power2 Key."; -} - -// Power3 Key --------------------------------------------------------------- - -class APower3Key : public AStrifeKey -{ - DECLARE_ACTOR (APower3Key, AStrifeKey) -public: - const char *PickupMessage (); -}; - -FState APower3Key::States[] = -{ - S_NORMAL (PWR3, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (APower3Key, Strife, -1, 0) - PROP_StrifeType (141) - PROP_StrifeTeaserType (137) - PROP_StrifeTeaserType2 (140) - PROP_SpawnState (0) - PROP_Inventory_Icon ("I_PWR3") - PROP_Tag ("Power3_Key") -END_DEFAULTS - -const char *APower3Key::PickupMessage () -{ - return "You picked up the Power3 Key."; -} - -// Gold Key ----------------------------------------------------------------- - -class AGoldKey : public AStrifeKey -{ - DECLARE_ACTOR (AGoldKey, AStrifeKey) -public: - const char *PickupMessage (); -}; - -FState AGoldKey::States[] = -{ - S_NORMAL (KY1G, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AGoldKey, Strife, 40, 0) - PROP_StrifeType (142) - PROP_StrifeTeaserType (138) - PROP_StrifeTeaserType2 (141) - PROP_SpawnState (0) - PROP_Inventory_Icon ("I_KY1G") - PROP_Tag ("Gold_Key") -END_DEFAULTS - -const char *AGoldKey::PickupMessage () -{ - return "You picked up the Gold Key."; -} - -// ID Card ------------------------------------------------------------------ - -class AIDCard : public AStrifeKey -{ - DECLARE_ACTOR (AIDCard, AStrifeKey) -public: - const char *PickupMessage (); -}; - -FState AIDCard::States[] = -{ - S_NORMAL (CRD2, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AIDCard, Strife, 13, 0) - PROP_StrifeType (143) - PROP_StrifeTeaserType (139) - PROP_StrifeTeaserType2 (142) - PROP_SpawnState (0) - PROP_Inventory_Icon ("I_CRD2") - PROP_Tag ("ID_Card") -END_DEFAULTS - -const char *AIDCard::PickupMessage () -{ - return "You picked up the ID Card."; -} - -// Silver Key --------------------------------------------------------------- - -class ASilverKey : public AStrifeKey -{ - DECLARE_ACTOR (ASilverKey, AStrifeKey) -public: - const char *PickupMessage (); -}; - -FState ASilverKey::States[] = -{ - S_NORMAL (KY2S, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ASilverKey, Strife, 38, 0) - PROP_StrifeType (144) - PROP_StrifeTeaserType (140) - PROP_StrifeTeaserType2 (143) - PROP_SpawnState (0) - PROP_Inventory_Icon ("I_KY2S") - PROP_Tag ("Silver_Key") -END_DEFAULTS - -const char *ASilverKey::PickupMessage () -{ - return "You picked up the Silver Key."; -} - -// Oracle Key --------------------------------------------------------------- - -class AOracleKey : public AStrifeKey -{ - DECLARE_ACTOR (AOracleKey, AStrifeKey) -public: - const char *PickupMessage (); -}; - -FState AOracleKey::States[] = -{ - S_NORMAL (ORAC, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AOracleKey, Strife, 61, 0) - PROP_StrifeType (145) - PROP_StrifeTeaserType (141) - PROP_StrifeTeaserType2 (144) - PROP_SpawnState (0) - PROP_Inventory_Icon ("I_ORAC") - PROP_Tag ("Oracle_Key") -END_DEFAULTS - -const char *AOracleKey::PickupMessage () -{ - return "You picked up the Oracle Key."; -} - -// Military ID -------------------------------------------------------------- - -class AMilitaryID : public AStrifeKey -{ - DECLARE_ACTOR (AMilitaryID, AStrifeKey) -public: - const char *PickupMessage (); -}; - -FState AMilitaryID::States[] = -{ - S_NORMAL (GYID, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AMilitaryID, Strife, -1, 0) - PROP_StrifeType (146) - PROP_StrifeTeaserType (142) - PROP_StrifeTeaserType2 (145) - PROP_SpawnState (0) - PROP_Inventory_Icon ("I_GYID") - PROP_Tag ("Military ID") -END_DEFAULTS - -const char *AMilitaryID::PickupMessage () -{ - return "You picked up the Military ID."; -} - -// Order Key ---------------------------------------------------------------- - -class AOrderKey : public AStrifeKey -{ - DECLARE_ACTOR (AOrderKey, AStrifeKey) -public: - const char *PickupMessage (); -}; - -FState AOrderKey::States[] = -{ - S_NORMAL (FUBR, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AOrderKey, Strife, 86, 0) - PROP_StrifeType (147) - PROP_StrifeTeaserType (143) - PROP_StrifeTeaserType2 (146) - PROP_SpawnState (0) - PROP_Inventory_Icon ("I_FUBR") - PROP_Tag ("Order_Key") -END_DEFAULTS - -const char *AOrderKey::PickupMessage () -{ - return "You picked up the Order Key."; -} - -// Warehouse Key ------------------------------------------------------------ - -class AWarehouseKey : public AStrifeKey -{ - DECLARE_ACTOR (AWarehouseKey, AStrifeKey) -public: - const char *PickupMessage (); -}; - -FState AWarehouseKey::States[] = -{ - S_NORMAL (WARE, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AWarehouseKey, Strife, 166, 0) - PROP_StrifeType (148) - PROP_StrifeTeaserType (144) - PROP_StrifeTeaserType2 (147) - PROP_SpawnState (0) - PROP_Inventory_Icon ("I_WARE") - PROP_Tag ("Warehouse_Key") -END_DEFAULTS - -const char *AWarehouseKey::PickupMessage () -{ - return "You picked up the Warehouse Key."; -} - -// Brass Key ---------------------------------------------------------------- - -class ABrassKey : public AStrifeKey -{ - DECLARE_ACTOR (ABrassKey, AStrifeKey) -public: - const char *PickupMessage (); -}; - -FState ABrassKey::States[] = -{ - S_NORMAL (KY3B, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ABrassKey, Strife, 39, 0) - PROP_StrifeType (149) - PROP_StrifeTeaserType (145) - PROP_StrifeTeaserType2 (148) - PROP_SpawnState (0) - PROP_Inventory_Icon ("I_KY3B") - PROP_Tag ("Brass_Key") -END_DEFAULTS - -const char *ABrassKey::PickupMessage () -{ - return "You picked up the Brass Key."; -} - -// Red Crystal Key ---------------------------------------------------------- - -class ARedCrystalKey : public AStrifeKey -{ - DECLARE_ACTOR (ARedCrystalKey, AStrifeKey) -public: - const char *PickupMessage (); -}; - -FState ARedCrystalKey::States[] = -{ - S_BRIGHT (RCRY, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ARedCrystalKey, Strife, 192, 0) - PROP_StrifeType (150) - PROP_StrifeTeaserType (146) - PROP_StrifeTeaserType2 (149) - PROP_SpawnState (0) - PROP_Inventory_Icon ("I_RCRY") - PROP_Tag ("Red_Crystal_Key") -END_DEFAULTS - -const char *ARedCrystalKey::PickupMessage () -{ - return "You picked up the Red Crystal Key."; -} - -// Blue Crystal Key --------------------------------------------------------- - -class ABlueCrystalKey : public AStrifeKey -{ - DECLARE_ACTOR (ABlueCrystalKey, AStrifeKey) -public: - const char *PickupMessage (); -}; - -FState ABlueCrystalKey::States[] = -{ - S_BRIGHT (BCRY, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ABlueCrystalKey, Strife, 193, 0) - PROP_StrifeType (151) - PROP_StrifeTeaserType (147) - PROP_StrifeTeaserType2 (150) - PROP_SpawnState (0) - PROP_Inventory_Icon ("I_BCRY") - PROP_Tag ("Blue_Crystal_Key") -END_DEFAULTS - -const char *ABlueCrystalKey::PickupMessage () -{ - return "You picked up the Blue Crystal Key."; -} - -// Chapel Key --------------------------------------------------------------- - -class AChapelKey : public AStrifeKey -{ - DECLARE_ACTOR (AChapelKey, AStrifeKey) -public: - const char *PickupMessage (); -}; - -FState AChapelKey::States[] = -{ - S_NORMAL (CHAP, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AChapelKey, Strife, 195, 0) - PROP_StrifeType (152) - PROP_StrifeTeaserType (148) - PROP_StrifeTeaserType2 (151) - PROP_SpawnState (0) - PROP_Inventory_Icon ("I_CHAP") - PROP_Tag ("Chapel_Key") -END_DEFAULTS - -const char *AChapelKey::PickupMessage () -{ - return "You picked up the Chapel Key."; -} - -// Catacomb Key ------------------------------------------------------------- - -class ACatacombKey : public AStrifeKey -{ - DECLARE_ACTOR (ACatacombKey, AStrifeKey) -public: - bool TryPickup (AActor *toucher); - const char *PickupMessage (); -}; - -FState ACatacombKey::States[] = -{ - S_NORMAL (TUNL, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ACatacombKey, Strife, -1, 0) - PROP_StrifeType (153) - PROP_StrifeTeaserType (149) - PROP_StrifeTeaserType2 (152) - PROP_SpawnState (0) - PROP_Inventory_Icon ("I_TUNL") - PROP_Tag ("Catacomb_Key") // "Tunnel_Key" in the Teaser -END_DEFAULTS - -bool ACatacombKey::TryPickup (AActor *toucher) -{ - if (Super::TryPickup (toucher)) - { - toucher->GiveInventoryType (QuestItemClasses[27]); - return true; - } - return false; -} - -const char *ACatacombKey::PickupMessage () -{ - return "You picked up the Catacomb Key."; -} - -// Security Key ------------------------------------------------------------- - -class ASecurityKey : public AStrifeKey -{ - DECLARE_ACTOR (ASecurityKey, AStrifeKey) -public: - const char *PickupMessage (); -}; - -FState ASecurityKey::States[] = -{ - S_NORMAL (SECK, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ASecurityKey, Strife, -1, 0) - PROP_StrifeType (154) - PROP_StrifeTeaserType (150) - PROP_StrifeTeaserType2 (153) - PROP_SpawnState (0) - PROP_Inventory_Icon ("I_SECK") - PROP_Tag ("Security_Key") -END_DEFAULTS - -const char *ASecurityKey::PickupMessage () -{ - return "You picked up the Security Key."; -} - -// Core Key ----------------------------------------------------------------- - -class ACoreKey : public AStrifeKey -{ - DECLARE_ACTOR (ACoreKey, AStrifeKey) -public: - const char *PickupMessage (); -}; - -FState ACoreKey::States[] = -{ - S_NORMAL (GOID, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ACoreKey, Strife, 236, 0) - PROP_StrifeType (155) - PROP_StrifeTeaserType (151) - PROP_StrifeTeaserType2 (154) - PROP_SpawnState (0) - PROP_Inventory_Icon ("I_GOID") - PROP_Tag ("Core_Key") // "New_Key1" in the Teaser -END_DEFAULTS - -const char *ACoreKey::PickupMessage () -{ - return "You picked up the Core Key."; -} - -// Mauler Key --------------------------------------------------------------- - -class AMaulerKey : public AStrifeKey -{ - DECLARE_ACTOR (AMaulerKey, AStrifeKey) -public: - const char *PickupMessage (); -}; - -FState AMaulerKey::States[] = -{ - S_NORMAL (BLTK, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AMaulerKey, Strife, 233, 0) - PROP_StrifeType (156) - PROP_StrifeTeaserType (152) - PROP_StrifeTeaserType2 (155) - PROP_SpawnState (0) - PROP_Inventory_Icon ("I_BLTK") - PROP_Tag ("Mauler_Key") // "New_Key2" in the Teaser -END_DEFAULTS - -const char *AMaulerKey::PickupMessage () -{ - return "You picked up the Mauler Key."; -} - -// Factory Key -------------------------------------------------------------- - -class AFactoryKey : public AStrifeKey -{ - DECLARE_ACTOR (AFactoryKey, AStrifeKey) -public: - const char *PickupMessage (); -}; - -FState AFactoryKey::States[] = -{ - S_NORMAL (PROC, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AFactoryKey, Strife, 234, 0) - PROP_StrifeType (157) - PROP_StrifeTeaserType (153) - PROP_StrifeTeaserType2 (156) - PROP_SpawnState (0) - PROP_Inventory_Icon ("I_PROC") - PROP_Tag ("Factory_Key") // "New_Key3" in the Teaser -END_DEFAULTS - -const char *AFactoryKey::PickupMessage () -{ - return "You picked up the Factory Key."; -} - -// Mine Key ----------------------------------------------------------------- - -class AMineKey : public AStrifeKey -{ - DECLARE_ACTOR (AMineKey, AStrifeKey) -public: - const char *PickupMessage (); -}; - -FState AMineKey::States[] = -{ - S_NORMAL (MINE, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AMineKey, Strife, 235, 0) - PROP_StrifeType (158) - PROP_StrifeTeaserType (154) - PROP_StrifeTeaserType2 (157) - PROP_SpawnState (0) - PROP_Inventory_Icon ("I_MINE") // "New_Key4" in the Teaser - PROP_Tag ("MINE_KEY") -END_DEFAULTS - -const char *AMineKey::PickupMessage () -{ - return "You picked up the Mine Key."; -} - -// New Key5 ----------------------------------------------------------------- - -class ANewKey5 : public AStrifeKey -{ - DECLARE_ACTOR (ANewKey5, AStrifeKey) -public: - const char *PickupMessage (); -}; - -FState ANewKey5::States[] = -{ - S_NORMAL (BLTK, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ANewKey5, Strife, -1, 0) - PROP_StrifeType (159) - PROP_StrifeTeaserType (155) - PROP_StrifeTeaserType2 (158) - PROP_SpawnState (0) - PROP_Inventory_Icon ("I_BLTK") - PROP_Tag ("New_Key5") -END_DEFAULTS - -const char *ANewKey5::PickupMessage () -{ - return "You picked up the New Key5."; -} - -// Prison Pass -------------------------------------------------------------- - -class APrisonPass : public AKey -{ - DECLARE_ACTOR (APrisonPass, AKey) -public: - bool TryPickup (AActor *toucher); - bool SpecialDropAction (AActor *dropper); - const char *PickupMessage (); -}; - -FState APrisonPass::States[] = -{ - S_NORMAL (TOKN, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (APrisonPass, Strife, -1, 0) - PROP_StrifeType (304) - PROP_StrifeTeaserType (286) - PROP_StrifeTeaserType2 (303) - PROP_SpawnState (0) - PROP_Inventory_Icon ("I_TOKN") - PROP_Tag ("Prison_pass") -END_DEFAULTS - -bool APrisonPass::TryPickup (AActor *toucher) -{ - Super::TryPickup (toucher); - EV_DoDoor (DDoor::doorOpen, NULL, toucher, 223, 2*FRACUNIT, 0, 0, 0); - toucher->GiveInventoryType (QuestItemClasses[9]); - return true; -} - -const char *APrisonPass::PickupMessage () -{ - return "You picked up the Prison pass."; -} - -//============================================================================ -// -// APrisonPass :: SpecialDropAction -// -// Trying to make a monster that drops a prison pass turns it into an -// OpenDoor223 item instead. That means the only way to get it in Strife -// is through dialog, which is why it doesn't have its own sprite. -// -//============================================================================ - -bool APrisonPass::SpecialDropAction (AActor *dropper) -{ - EV_DoDoor (DDoor::doorOpen, NULL, dropper, 223, 2*FRACUNIT, 0, 0, 0); - Destroy (); - return true; -} - -// Oracle Pass -------------------------------------------------------------- - -class AOraclePass : public AInventory -{ - DECLARE_ACTOR (AOraclePass, AInventory) -public: - bool TryPickup (AActor *toucher); - const char *PickupMessage (); -}; - -FState AOraclePass::States[] = -{ - S_NORMAL (OTOK, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AOraclePass, Strife, -1, 0) - PROP_StrifeType (311) - PROP_StrifeTeaserType (292) - PROP_StrifeTeaserType2 (309) - PROP_SpawnState (0) - PROP_Inventory_FlagsSet(IF_INVBAR) - PROP_Inventory_Icon ("I_OTOK") - PROP_Tag ("Oracle_Pass") -END_DEFAULTS - -bool AOraclePass::TryPickup (AActor *toucher) -{ - if (Super::TryPickup (toucher)) - { - toucher->GiveInventoryType (QuestItemClasses[17]); - return true; - } - return false; -} - -const char *AOraclePass::PickupMessage () -{ - return "You picked up the Oracle Pass."; -} - diff --git a/src/g_strife/a_strifestuff.cpp b/src/g_strife/a_strifestuff.cpp index ade4469f7..c562bb14b 100644 --- a/src/g_strife/a_strifestuff.cpp +++ b/src/g_strife/a_strifestuff.cpp @@ -26,8 +26,6 @@ // angle += pr_spawnmissile.Random2() << 22 // Note that these numbers are different from those used by all the other Doom engine games. -// Strife seems to use the mass of armor for something, since it's not the default value. - /* These mobjinfos have been converted: 0 ForceFieldGuard @@ -423,138 +421,6 @@ int AForceFieldGuard::TakeSpecialDamage (AActor *inflictor, AActor *source, int return health; } -// Tank 1 (Huge) ------------------------------------------------------------ - -class ATank1 : public AActor -{ - DECLARE_ACTOR (ATank1, AActor) -}; - -FState ATank1::States[] = -{ - S_NORMAL (TNK1, 'A', 15, NULL, &States[1]), - S_NORMAL (TNK1, 'B', 11, NULL, &States[2]), - S_NORMAL (TNK1, 'C', 40, NULL, &States[0]) -}; - -IMPLEMENT_ACTOR (ATank1, Strife, 209, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (16) - PROP_HeightFixed (192) - PROP_Flags (MF_SOLID) - PROP_StrifeType (31) -END_DEFAULTS - -// Tank 2 (Huge) ------------------------------------------------------------ - -class ATank2 : public AActor -{ - DECLARE_ACTOR (ATank2, AActor) -}; - -FState ATank2::States[] = -{ - S_NORMAL (TNK2, 'A', 15, NULL, &States[1]), - S_NORMAL (TNK2, 'B', 11, NULL, &States[2]), - S_NORMAL (TNK2, 'C', 40, NULL, &States[0]) -}; - -IMPLEMENT_ACTOR (ATank2, Strife, 210, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (16) - PROP_HeightFixed (192) - PROP_Flags (MF_SOLID) - PROP_StrifeType (32) -END_DEFAULTS - -// Tank 3 (Huge) ------------------------------------------------------------ - -class ATank3 : public AActor -{ - DECLARE_ACTOR (ATank3, AActor) -}; - -FState ATank3::States[] = -{ - S_NORMAL (TNK3, 'A', 15, NULL, &States[1]), - S_NORMAL (TNK3, 'B', 11, NULL, &States[2]), - S_NORMAL (TNK3, 'C', 40, NULL, &States[0]) -}; - -IMPLEMENT_ACTOR (ATank3, Strife, 211, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (16) - PROP_HeightFixed (192) - PROP_Flags (MF_SOLID) - PROP_StrifeType (33) -END_DEFAULTS - -// Tank 4 ------------------------------------------------------------------- - -class ATank4 : public AActor -{ - DECLARE_ACTOR (ATank4, AActor) -}; - -FState ATank4::States[] = -{ - S_NORMAL (TNK4, 'A', 15, NULL, &States[1]), - S_NORMAL (TNK4, 'B', 11, NULL, &States[2]), - S_NORMAL (TNK4, 'C', 40, NULL, &States[0]) -}; - -IMPLEMENT_ACTOR (ATank4, Strife, 213, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (16) - PROP_HeightFixed (56) - PROP_Flags (MF_SOLID) - PROP_StrifeType (34) -END_DEFAULTS - -// Tank 5 ------------------------------------------------------------------- - -class ATank5 : public AActor -{ - DECLARE_ACTOR (ATank5, AActor) -}; - -FState ATank5::States[] = -{ - S_NORMAL (TNK5, 'A', 15, NULL, &States[1]), - S_NORMAL (TNK5, 'B', 11, NULL, &States[2]), - S_NORMAL (TNK5, 'C', 40, NULL, &States[0]) -}; - -IMPLEMENT_ACTOR (ATank5, Strife, 214, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (16) - PROP_HeightFixed (56) - PROP_Flags (MF_SOLID) - PROP_StrifeType (35) -END_DEFAULTS - -// Tank 6 ------------------------------------------------------------------- - -class ATank6 : public AActor -{ - DECLARE_ACTOR (ATank6, AActor) -}; - -FState ATank6::States[] = -{ - S_NORMAL (TNK6, 'A', 15, NULL, &States[1]), - S_NORMAL (TNK6, 'B', 11, NULL, &States[2]), - S_NORMAL (TNK6, 'C', 40, NULL, &States[0]) -}; - -IMPLEMENT_ACTOR (ATank6, Strife, 229, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (16) - PROP_HeightFixed (56) - PROP_Flags (MF_SOLID) - PROP_StrifeType (36) -END_DEFAULTS - // Kneeling Guy ------------------------------------------------------------- void A_SetShadow (AActor *self) @@ -762,1803 +628,6 @@ IMPLEMENT_ACTOR (ACeilingTurret, Strife, 27, 0) PROP_DeathSound ("turret/death") END_DEFAULTS -// Water Bottle ------------------------------------------------------------- - -class AWaterBottle : public AActor -{ - DECLARE_ACTOR (AWaterBottle, AActor) -}; - -FState AWaterBottle::States[] = -{ - S_NORMAL (WATR, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AWaterBottle, Strife, 2014, 0) - PROP_SpawnState (0) - PROP_StrifeType (131) -END_DEFAULTS - -// Mug ---------------------------------------------------------------------- - -class AMug : public AActor -{ - DECLARE_ACTOR (AMug, AActor) -}; - -FState AMug::States[] = -{ - S_NORMAL (MUGG, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AMug, Strife, 164, 0) - PROP_SpawnState (0) - PROP_StrifeType (132) -END_DEFAULTS - -// Wooden Barrel ------------------------------------------------------------ - -class AWoodenBarrel : public AActor -{ - DECLARE_ACTOR (AWoodenBarrel, AActor) -}; - -FState AWoodenBarrel::States[] = -{ - S_NORMAL (BARW, 'A', -1, NULL, NULL), - - S_NORMAL (BARW, 'B', 2, A_Scream, &States[2]), - S_NORMAL (BARW, 'C', 2, NULL, &States[3]), - S_NORMAL (BARW, 'D', 2, A_NoBlocking, &States[4]), - S_NORMAL (BARW, 'E', 2, NULL, &States[5]), - S_NORMAL (BARW, 'F', 2, NULL, &States[6]), - S_NORMAL (BARW, 'G', 2, NULL, &States[7]), - S_NORMAL (BARW, 'H', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AWoodenBarrel, Strife, 82, 0) - PROP_SpawnState (0) - PROP_SpawnHealth (10) - PROP_DeathState (1) - PROP_RadiusFixed (10) - PROP_HeightFixed (32) - PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_NOBLOOD) - PROP_Flags4 (MF4_INCOMBAT) - PROP_StrifeType (203) - PROP_DeathSound ("woodenbarrel/death") -END_DEFAULTS - -// Strife's explosive barrel ------------------------------------------------ - -class AExplosiveBarrel2 : public AExplosiveBarrel -{ - DECLARE_ACTOR (AExplosiveBarrel2, AExplosiveBarrel) -public: - void GetExplodeParms (int &damage, int &dist, bool &hurtSource) - { - damage = dist = 64; - } -}; - -FState AExplosiveBarrel2::States[] = -{ - S_NORMAL (BART, 'A', -1, NULL, NULL), - - S_BRIGHT (BART, 'B', 2, A_Scream, &States[2]), - S_BRIGHT (BART, 'C', 2, NULL, &States[3]), - S_BRIGHT (BART, 'D', 2, NULL, &States[4]), - S_BRIGHT (BART, 'E', 2, A_NoBlocking, &States[5]), - S_BRIGHT (BART, 'F', 2, A_ExplodeAndAlert, &States[6]), - S_BRIGHT (BART, 'G', 2, NULL, &States[7]), - S_BRIGHT (BART, 'H', 2, NULL, &States[8]), - S_BRIGHT (BART, 'I', 2, NULL, &States[9]), - S_BRIGHT (BART, 'J', 2, NULL, &States[10]), - S_BRIGHT (BART, 'K', 3, NULL, &States[11]), - S_NORMAL (BART, 'L', -1, NULL, NULL), - -}; - -IMPLEMENT_ACTOR (AExplosiveBarrel2, Strife, 94, 0) - PROP_SpawnState (0) - PROP_SpawnHealth (30) - PROP_DeathState (1) - PROP_RadiusFixed (10) - PROP_HeightFixed (32) - PROP_StrifeType (204) - //PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_NOBLOOD) - PROP_Flags4 (MF4_INCOMBAT) -END_DEFAULTS - -// Target Practice ----------------------------------------------------------- - -class ATargetPractice : public AActor -{ - DECLARE_ACTOR (ATargetPractice, AActor) -}; - -void A_20e10 (AActor *self) -{ - sector_t *sec = self->Sector; - - if (self->z == sec->floorplane.ZatPoint (self->x, self->y)) - { - if ((sec->special & 0xFF) == Damage_InstantDeath) - { - P_DamageMobj (self, NULL, NULL, 999, MOD_UNKNOWN); - } - else if ((sec->special & 0xFF) == Scroll_StrifeCurrent) - { - int anglespeed = sec->tag - 100; - fixed_t speed = (anglespeed % 10) << (FRACBITS - 4); - angle_t finean = (anglespeed / 10) << (32-3); - finean >>= ANGLETOFINESHIFT; - self->momx += FixedMul (speed, finecosine[finean]); - self->momy += FixedMul (speed, finesine[finean]); - } - } -} - -FState ATargetPractice::States[] = -{ - S_NORMAL (HOGN, 'A', 2, A_20e10, &States[0]), - - S_NORMAL (HOGN, 'B', 1, A_20e10, &States[2]), - S_NORMAL (HOGN, 'C', 1, A_Pain, &States[0]) -}; - -IMPLEMENT_ACTOR (ATargetPractice, Strife, 208, 0) - PROP_SpawnState (0) - PROP_SpawnHealthLong (99999999) - PROP_PainState (1) - PROP_PainChance (255) - PROP_RadiusFixed (10) - PROP_HeightFixed (72) - PROP_MassLong (9999999) - PROP_Flags (MF_SOLID|MF_SHOOTABLE|MF_NOBLOOD) - PROP_Flags4 (MF4_INCOMBAT) - PROP_StrifeType (205) - PROP_PainSound ("misc/metalhit") -END_DEFAULTS - -// Light (Silver, Fluorescent) ---------------------------------------------- - -class ALightSilverFluorescent : public AActor -{ - DECLARE_ACTOR (ALightSilverFluorescent, AActor) -}; - -FState ALightSilverFluorescent::States[] = -{ - S_BRIGHT (LITS, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ALightSilverFluorescent, Strife, 95, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (4) - PROP_HeightFixed (16) - PROP_Flags (MF_NOBLOCKMAP) - PROP_Flags4 (MF4_FIXMAPTHINGPOS) - PROP_StrifeType (206) -END_DEFAULTS - -// Light (Brown, Fluorescent) ----------------------------------------------- - -class ALightBrownFluorescent : public AActor -{ - DECLARE_ACTOR (ALightBrownFluorescent, AActor) -}; - -FState ALightBrownFluorescent::States[] = -{ - S_BRIGHT (LITB, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ALightBrownFluorescent, Strife, 96, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (4) - PROP_HeightFixed (16) - PROP_Flags (MF_NOBLOCKMAP) - PROP_Flags4 (MF4_FIXMAPTHINGPOS) - PROP_StrifeType (207) -END_DEFAULTS - -// Light (Gold, Fluorescent) ------------------------------------------------ - -class ALightGoldFluorescent : public AActor -{ - DECLARE_ACTOR (ALightGoldFluorescent, AActor) -}; - -FState ALightGoldFluorescent::States[] = -{ - S_BRIGHT (LITG, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ALightGoldFluorescent, Strife, 97, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (4) - PROP_HeightFixed (16) - PROP_Flags (MF_NOBLOCKMAP) - PROP_Flags4 (MF4_FIXMAPTHINGPOS) - PROP_StrifeType (208) -END_DEFAULTS - -// Light Globe -------------------------------------------------------------- - -class ALightGlobe : public AActor -{ - DECLARE_ACTOR (ALightGlobe, AActor) -}; - -FState ALightGlobe::States[] = -{ - S_BRIGHT (LITE, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ALightGlobe, Strife, 2028, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (16) - PROP_HeightFixed (16) - PROP_Flags (MF_SOLID) - PROP_StrifeType (209) -END_DEFAULTS - -// Techno Pillar ------------------------------------------------------------ - -class APillarTechno : public AActor -{ - DECLARE_ACTOR (APillarTechno, AActor) -}; - -FState APillarTechno::States[] = -{ - S_NORMAL (MONI, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (APillarTechno, Strife, 48, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (20) - PROP_HeightFixed (128) - PROP_Flags (MF_SOLID) - PROP_StrifeType (210) -END_DEFAULTS - -// Aztec Pillar ------------------------------------------------------------- - -class APillarAztec : public AActor -{ - DECLARE_ACTOR (APillarAztec, AActor) -}; - -FState APillarAztec::States[] = -{ - S_NORMAL (STEL, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (APillarAztec, Strife, 54, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (16) - PROP_HeightFixed (128) - PROP_Flags (MF_SOLID) - PROP_StrifeType (211) -END_DEFAULTS - -// Damaged Aztec Pillar ----------------------------------------------------- - -class APillarAztecDamaged : public AActor -{ - DECLARE_ACTOR (APillarAztecDamaged, AActor) -}; - -FState APillarAztecDamaged::States[] = -{ - S_NORMAL (STLA, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (APillarAztecDamaged, Strife, 55, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (16) - PROP_HeightFixed (80) - PROP_Flags (MF_SOLID) - PROP_StrifeType (212) -END_DEFAULTS - -// Ruined Aztec Pillar ------------------------------------------------------ - -class APillarAztecRuined : public AActor -{ - DECLARE_ACTOR (APillarAztecRuined, AActor) -}; - -FState APillarAztecRuined::States[] = -{ - S_NORMAL (STLE, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (APillarAztecRuined, Strife, 56, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (16) - PROP_HeightFixed (40) - PROP_Flags (MF_SOLID) - PROP_StrifeType (213) -END_DEFAULTS - -// Huge Tech Pillar --------------------------------------------------------- - -class APillarHugeTech : public AActor -{ - DECLARE_ACTOR (APillarHugeTech, AActor) -}; - -// This was defined while compiling on Linux. -// I don't know where it came from. -#ifdef HUGE -#undef HUGE -#endif - -FState APillarHugeTech::States[] = -{ - S_NORMAL (HUGE, 'A', 4, NULL, &States[1]), - S_NORMAL (HUGE, 'B', 4, NULL, &States[2]), - S_NORMAL (HUGE, 'C', 4, NULL, &States[3]), - S_NORMAL (HUGE, 'D', 4, NULL, &States[0]) -}; - -IMPLEMENT_ACTOR (APillarHugeTech, Strife, 57, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (24) - PROP_HeightFixed (192) - PROP_Flags (MF_SOLID) - PROP_StrifeType (214) -END_DEFAULTS - -// Alien Power Crystal in a Pillar ------------------------------------------ - -class APillarAlienPower : public AActor -{ - DECLARE_ACTOR (APillarAlienPower, AActor) -}; - -FState APillarAlienPower::States[] = -{ - S_NORMAL (APOW, 'A', 4, A_LoopActiveSound, &States[0]) -}; - -IMPLEMENT_ACTOR (APillarAlienPower, Strife, 227, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (24) - PROP_HeightFixed (192) - PROP_Flags (MF_SOLID) - PROP_StrifeType (215) - PROP_ActiveSound ("ambient/alien2") -END_DEFAULTS - -// SStalactiteBig ----------------------------------------------------------- - -class ASStalactiteBig : public AActor -{ - DECLARE_ACTOR (ASStalactiteBig, AActor) -}; - -FState ASStalactiteBig::States[] = -{ - S_NORMAL (STLG, 'C', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ASStalactiteBig, Strife, 98, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (16) - PROP_HeightFixed (54) - PROP_Flags (MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY) - PROP_StrifeType (216) -END_DEFAULTS - -// SStalactiteSmall --------------------------------------------------------- - -class ASStalactiteSmall : public AActor -{ - DECLARE_ACTOR (ASStalactiteSmall, AActor) -}; - -FState ASStalactiteSmall::States[] = -{ - S_NORMAL (STLG, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ASStalactiteSmall, Strife, 161, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (16) - PROP_HeightFixed (40) - PROP_Flags (MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY) - PROP_StrifeType (217) -END_DEFAULTS - -// SStalagmiteBig ----------------------------------------------------------- - -class ASStalagmiteBig : public AActor -{ - DECLARE_ACTOR (ASStalagmiteBig, AActor) -}; - -FState ASStalagmiteBig::States[] = -{ - S_NORMAL (STLG, 'B', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ASStalagmiteBig, Strife, 160, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (16) - PROP_HeightFixed (40) - PROP_Flags (MF_SOLID) - PROP_StrifeType (218) -END_DEFAULTS - -// Cave Pillar Top ---------------------------------------------------------- - -class ACavePillarTop : public AActor -{ - DECLARE_ACTOR (ACavePillarTop, AActor) -}; - -FState ACavePillarTop::States[] = -{ - S_NORMAL (STLG, 'D', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ACavePillarTop, Strife, 159, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (16) - PROP_HeightFixed (128) - PROP_Flags (MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY) - PROP_StrifeType (219) -END_DEFAULTS - -// Cave Pillar Bottom ------------------------------------------------------- - -class ACavePillarBottom : public AActor -{ - DECLARE_ACTOR (ACavePillarBottom, AActor) -}; - -FState ACavePillarBottom::States[] = -{ - S_NORMAL (STLG, 'E', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ACavePillarBottom, Strife, 162, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (16) - PROP_HeightFixed (128) - PROP_Flags (MF_SOLID) - PROP_StrifeType (220) -END_DEFAULTS - -// SStalagmiteSmall --------------------------------------------------------- - -class ASStalagmiteSmall : public AActor -{ - DECLARE_ACTOR (ASStalagmiteSmall, AActor) -}; - -FState ASStalagmiteSmall::States[] = -{ - S_NORMAL (STLG, 'F', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ASStalagmiteSmall, Strife, 163, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (16) - PROP_HeightFixed (25) - PROP_Flags (MF_SOLID) - PROP_StrifeType (221) -END_DEFAULTS - -// Candle ------------------------------------------------------------------- - -class ACandle : public AActor -{ - DECLARE_ACTOR (ACandle, AActor) -}; - -FState ACandle::States[] = -{ - S_BRIGHT (KNDL, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ACandle, Strife, 34, 0) - PROP_SpawnState (0) - PROP_StrifeType (222) -END_DEFAULTS - -// StrifeCandelabra --------------------------------------------------------- - -class AStrifeCandelabra : public AActor -{ - DECLARE_ACTOR (AStrifeCandelabra, AActor) -}; - -FState AStrifeCandelabra::States[] = -{ - S_BRIGHT (CLBR, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AStrifeCandelabra, Strife, 35, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (16) - PROP_HeightFixed (40) - PROP_Flags (MF_SOLID) - PROP_StrifeType (223) -END_DEFAULTS - -// Floor Water Drop --------------------------------------------------------- - -class AWaterDropOnFloor : public AActor -{ - DECLARE_ACTOR (AWaterDropOnFloor, AActor) -}; - -FState AWaterDropOnFloor::States[] = -{ - S_NORMAL (DRIP, 'A', 6, A_FLoopActiveSound, &States[1]), - S_NORMAL (DRIP, 'B', 4, NULL, &States[2]), - S_NORMAL (DRIP, 'C', 4, NULL, &States[3]), - S_NORMAL (DRIP, 'D', 4, A_FLoopActiveSound, &States[4]), - S_NORMAL (DRIP, 'E', 4, NULL, &States[5]), - S_NORMAL (DRIP, 'F', 4, NULL, &States[6]), - S_NORMAL (DRIP, 'G', 4, A_FLoopActiveSound, &States[7]), - S_NORMAL (DRIP, 'H', 4, NULL, &States[0]) -}; - -IMPLEMENT_ACTOR (AWaterDropOnFloor, Strife, 103, 0) - PROP_SpawnState (0) - PROP_Flags (MF_NOBLOCKMAP) - PROP_StrifeType (224) - PROP_ActiveSound ("world/waterdrips") -END_DEFAULTS - -// Waterfall Splash --------------------------------------------------------- -// Why is this not visible in Strife? - -class AWaterfallSplash : public AActor -{ - DECLARE_ACTOR (AWaterfallSplash, AActor) -}; - -FState AWaterfallSplash::States[] = -{ - S_NORMAL (SPLH, 'A', 4, NULL, &States[1]), - S_NORMAL (SPLH, 'B', 4, NULL, &States[2]), - S_NORMAL (SPLH, 'C', 4, NULL, &States[3]), - S_NORMAL (SPLH, 'D', 8, NULL, &States[4]), - S_NORMAL (SPLH, 'E', 4, NULL, &States[5]), - S_NORMAL (SPLH, 'F', 4, NULL, &States[6]), - S_NORMAL (SPLH, 'G', 4, NULL, &States[7]), - S_NORMAL (SPLH, 'H', 4, A_LoopActiveSound, &States[0]), -}; - -IMPLEMENT_ACTOR (AWaterfallSplash, Strife, 104, 0) - PROP_SpawnState (0) - PROP_Flags (MF_NOBLOCKMAP) - PROP_StrifeType (225) - PROP_ActiveSound ("world/waterfall") -END_DEFAULTS - -// Ceiling Water Drip ------------------------------------------------------- - -class AWaterDrip : public AActor -{ - DECLARE_ACTOR (AWaterDrip, AActor) -}; - -FState AWaterDrip::States[] = -{ - S_NORMAL (CDRP, 'A', 10, NULL, &States[1]), - S_NORMAL (CDRP, 'B', 8, NULL, &States[2]), - S_NORMAL (CDRP, 'C', 8, NULL, &States[3]), - S_NORMAL (CDRP, 'D', 8, NULL, &States[0]) -}; - -IMPLEMENT_ACTOR (AWaterDrip, Strife, 53, 0) - PROP_SpawnState (0) - PROP_HeightFixed (1) - PROP_Flags (MF_NOBLOCKMAP|MF_SPAWNCEILING|MF_NOGRAVITY) - PROP_StrifeType (226) -END_DEFAULTS - -// WaterFountain ------------------------------------------------------------ - -class AWaterFountain : public AActor -{ - DECLARE_ACTOR (AWaterFountain, AActor) -}; - -FState AWaterFountain::States[] = -{ - S_NORMAL (WTFT, 'A', 4, NULL, &States[1]), - S_NORMAL (WTFT, 'B', 4, NULL, &States[2]), - S_NORMAL (WTFT, 'C', 4, NULL, &States[3]), - S_NORMAL (WTFT, 'D', 4, A_LoopActiveSound, &States[0]), -}; - -IMPLEMENT_ACTOR (AWaterFountain, Strife, 112, 0) - PROP_SpawnState (0) - PROP_Flags (MF_NOBLOCKMAP) - PROP_StrifeType (227) - PROP_ActiveSound ("world/watersplash") -END_DEFAULTS - -// Hearts in Tank ----------------------------------------------------------- - -class AHeartsInTank : public AActor -{ - DECLARE_ACTOR (AHeartsInTank, AActor) -}; - -FState AHeartsInTank::States[] = -{ - S_BRIGHT (HERT, 'A', 4, NULL, &States[1]), - S_BRIGHT (HERT, 'B', 4, NULL, &States[2]), - S_BRIGHT (HERT, 'C', 4, NULL, &States[0]) -}; - -IMPLEMENT_ACTOR (AHeartsInTank, Strife, 113, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (16) - PROP_HeightFixed (56) - PROP_Flags (MF_SOLID) - PROP_StrifeType (228) -END_DEFAULTS - -// Teleport Swirl ----------------------------------------------------------- - -class ATeleportSwirl : public AActor -{ - DECLARE_ACTOR (ATeleportSwirl, AActor) -}; - -FState ATeleportSwirl::States[] = -{ - S_BRIGHT (TELP, 'A', 3, NULL, &States[1]), - S_BRIGHT (TELP, 'B', 3, NULL, &States[2]), - S_BRIGHT (TELP, 'C', 3, NULL, &States[3]), - S_BRIGHT (TELP, 'D', 3, NULL, &States[0]) -}; - -IMPLEMENT_ACTOR (ATeleportSwirl, Strife, 23, 0) - PROP_SpawnState (0) - PROP_Flags (MF_NOBLOCKMAP) - PROP_RenderStyle (STYLE_Add) - PROP_Alpha (TRANSLUC25) - PROP_StrifeType (229) -END_DEFAULTS - -// Dead Player -------------------------------------------------------------- -// Strife's disappeared. This one doesn't. - -class ADeadStrifePlayer : public AActor -{ - DECLARE_ACTOR (ADeadStrifePlayer, AActor) -}; - -FState ADeadStrifePlayer::States[] = -{ - S_NORMAL (PLAY, 'P', 700, NULL, &States[1]), - S_NORMAL (RGIB, 'H', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ADeadStrifePlayer, Strife, 15, 0) - PROP_SpawnState (0) - PROP_StrifeType (231) -END_DEFAULTS - -// Dead Peasant ------------------------------------------------------------- -// Unlike Strife's, this one does not turn into gibs and disappear. - -class ADeadPeasant : public AActor -{ - DECLARE_ACTOR (ADeadPeasant, AActor) -}; - -FState ADeadPeasant::States[] = -{ - S_NORMAL (PEAS, 'N', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ADeadPeasant, Strife, 18, 0) - PROP_SpawnState (0) - PROP_StrifeType (232) -END_DEFAULTS - -// Dead Acolyte ------------------------------------------------------------- -// Unlike Strife's, this one does not turn into gibs and disappear. - -class ADeadAcolyte : public AActor -{ - DECLARE_ACTOR (ADeadAcolyte, AActor) -}; - -FState ADeadAcolyte::States[] = -{ - S_NORMAL (AGRD, 'N', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ADeadAcolyte, Strife, 21, 0) - PROP_SpawnState (0) - PROP_StrifeType (233) -END_DEFAULTS - -// Dead Reaver -------------------------------------------------------------- - -class ADeadReaver : public AActor -{ - DECLARE_ACTOR (ADeadReaver, AActor) -}; - -FState ADeadReaver::States[] = -{ - S_NORMAL (ROB1, 'R', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ADeadReaver, Strife, 20, 0) - PROP_SpawnState (0) - PROP_StrifeType (234) -END_DEFAULTS - -// Dead Rebel --------------------------------------------------------------- - -class ADeadRebel : public AActor -{ - DECLARE_ACTOR (ADeadRebel, AActor) -}; - -FState ADeadRebel::States[] = -{ - S_NORMAL (HMN1, 'N', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ADeadRebel, Strife, 19, 0) - PROP_SpawnState (0) - PROP_StrifeType (235) -END_DEFAULTS - -// Sacrificed Guy ----------------------------------------------------------- - -class ASacrificedGuy : public AActor -{ - DECLARE_ACTOR (ASacrificedGuy, AActor) -}; - -FState ASacrificedGuy::States[] = -{ - S_NORMAL (SACR, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ASacrificedGuy, Strife, 212, 0) - PROP_SpawnState (0) - PROP_StrifeType (236) -END_DEFAULTS - -// Pile of Guts ------------------------------------------------------------- - -class APileOfGuts : public AActor -{ - DECLARE_ACTOR (APileOfGuts, AActor) -}; - -FState APileOfGuts::States[] = -{ - S_NORMAL (DEAD, 'A', -1, NULL, NULL) -}; - -// Strife used a doomednum, which is the same as the Aztec Pillar. Since -// the pillar came first in the mobjinfo list, you could not spawn this -// in a map. Pity. -IMPLEMENT_ACTOR (APileOfGuts, Strife, -1, 0) - PROP_SpawnState (0) - PROP_StrifeType (237) -END_DEFAULTS - -// Burning Barrel ----------------------------------------------------------- - -class AStrifeBurningBarrel : public AActor -{ - DECLARE_ACTOR (AStrifeBurningBarrel, AActor) -}; - -FState AStrifeBurningBarrel::States[] = -{ - S_BRIGHT (BBAR, 'A', 4, NULL, &States[1]), - S_BRIGHT (BBAR, 'B', 4, NULL, &States[2]), - S_BRIGHT (BBAR, 'C', 4, NULL, &States[3]), - S_BRIGHT (BBAR, 'D', 4, NULL, &States[0]), -}; - -IMPLEMENT_ACTOR (AStrifeBurningBarrel, Strife, 70, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (16) - PROP_HeightFixed (48) - PROP_Flags (MF_SOLID) - PROP_StrifeType (238) -END_DEFAULTS - -// Burning Bowl ----------------------------------------------------------- - -class ABurningBowl : public AActor -{ - DECLARE_ACTOR (ABurningBowl, AActor) -}; - -FState ABurningBowl::States[] = -{ - S_BRIGHT (BOWL, 'A', 4, NULL, &States[1]), - S_BRIGHT (BOWL, 'B', 4, NULL, &States[2]), - S_BRIGHT (BOWL, 'C', 4, NULL, &States[3]), - S_BRIGHT (BOWL, 'D', 4, NULL, &States[0]), -}; - -IMPLEMENT_ACTOR (ABurningBowl, Strife, 105, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (16) - PROP_HeightFixed (16) - PROP_Flags (MF_SOLID) - PROP_StrifeType (239) - PROP_ActiveSound ("world/smallfire") -END_DEFAULTS - -// Burning Brazier ----------------------------------------------------------- - -class ABurningBrazier : public AActor -{ - DECLARE_ACTOR (ABurningBrazier, AActor) -}; - -FState ABurningBrazier::States[] = -{ - S_BRIGHT (BRAZ, 'A', 4, NULL, &States[1]), - S_BRIGHT (BRAZ, 'B', 4, NULL, &States[2]), - S_BRIGHT (BRAZ, 'C', 4, NULL, &States[3]), - S_BRIGHT (BRAZ, 'D', 4, NULL, &States[0]), -}; - -IMPLEMENT_ACTOR (ABurningBrazier, Strife, 106, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (10) - PROP_HeightFixed (32) - PROP_Flags (MF_SOLID) - PROP_StrifeType (240) - PROP_ActiveSound ("world/smallfire") -END_DEFAULTS - -// Small Torch (Lit) -------------------------------------------------------- - -class ASmallTorchLit : public AActor -{ - DECLARE_ACTOR (ASmallTorchLit, AActor) -}; - -FState ASmallTorchLit::States[] = -{ - S_BRIGHT (TRHL, 'A', 4, NULL, &States[1]), - S_BRIGHT (TRHL, 'B', 4, NULL, &States[2]), - S_BRIGHT (TRHL, 'C', 4, NULL, &States[3]), - S_BRIGHT (TRHL, 'D', 4, NULL, &States[0]) -}; - -IMPLEMENT_ACTOR (ASmallTorchLit, Strife, 107, 0) - PROP_SpawnState (0) - PROP_Radius (4) // This is intentionally not PROP_RadiusFixed - PROP_HeightFixed (16) - PROP_Flags (MF_NOBLOCKMAP) - PROP_Flags4 (MF4_FIXMAPTHINGPOS) - PROP_StrifeType (241) - - // It doesn't have any action functions, so how does it use this sound? - PROP_ActiveSound ("world/smallfire") -END_DEFAULTS - -// Small Torch (Unlit) -------------------------------------------------------- - -class ASmallTorchUnlit : public AActor -{ - DECLARE_ACTOR (ASmallTorchUnlit, AActor) -}; - -FState ASmallTorchUnlit::States[] = -{ - S_NORMAL (TRHO, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ASmallTorchUnlit, Strife, 108, 0) - PROP_SpawnState (0) - PROP_Radius (4) // This is intentionally not PROP_RadiusFixed - PROP_HeightFixed (16) - PROP_Flags (MF_NOBLOCKMAP) - PROP_Flags4 (MF4_FIXMAPTHINGPOS) - PROP_StrifeType (242) -END_DEFAULTS - -// Ceiling Chain ------------------------------------------------------------ - -class ACeilingChain : public AActor -{ - DECLARE_ACTOR (ACeilingChain, AActor) -}; - -FState ACeilingChain::States[] = -{ - S_NORMAL (CHAN, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ACeilingChain, Strife, 109, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (20) - PROP_HeightFixed (93) - PROP_Flags (MF_NOBLOCKMAP|MF_SPAWNCEILING|MF_NOGRAVITY) - PROP_StrifeType (243) -END_DEFAULTS - -// Cage Light --------------------------------------------------------------- - -class ACageLight : public AActor -{ - DECLARE_ACTOR (ACageLight, AActor) -}; - -FState ACageLight::States[] = -{ - // No, it's not bright even though it's a light. - S_NORMAL (CAGE, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ACageLight, Strife, 28, 0) - PROP_SpawnState (0) - PROP_HeightFixed (3) - PROP_Flags (MF_NOBLOCKMAP|MF_SPAWNCEILING|MF_NOGRAVITY) - PROP_StrifeType (244) -END_DEFAULTS - -// Statue ------------------------------------------------------------------- - -class AStatue : public AActor -{ - DECLARE_ACTOR (AStatue, AActor) -}; - -FState AStatue::States[] = -{ - S_NORMAL (STAT, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AStatue, Strife, 110, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (20) - PROP_HeightFixed (64) - PROP_Flags (MF_SOLID) - PROP_StrifeType (245) -END_DEFAULTS - -// Ruined Statue ------------------------------------------------------------ - -class AStatueRuined : public AActor -{ - DECLARE_ACTOR (AStatueRuined, AActor) -}; - -FState AStatueRuined::States[] = -{ - S_NORMAL (DSTA, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AStatueRuined, Strife, 44, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (20) - PROP_HeightFixed (56) - PROP_Flags (MF_SOLID) - PROP_StrifeType (246) -END_DEFAULTS - -// Medium Torch ------------------------------------------------------------- - -class AMediumTorch : public AActor -{ - DECLARE_ACTOR (AMediumTorch, AActor) -}; - -FState AMediumTorch::States[] = -{ - S_BRIGHT (LTRH, 'A', 4, NULL, &States[1]), - S_BRIGHT (LTRH, 'B', 4, NULL, &States[2]), - S_BRIGHT (LTRH, 'C', 4, NULL, &States[3]), - S_BRIGHT (LTRH, 'D', 4, NULL, &States[0]), -}; - -IMPLEMENT_ACTOR (AMediumTorch, Strife, 111, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (4) - PROP_HeightFixed (72) - PROP_Flags (MF_SOLID) - PROP_StrifeType (247) -END_DEFAULTS - -// Outside Lamp ------------------------------------------------------------- - -class AOutsideLamp : public AActor -{ - DECLARE_ACTOR (AOutsideLamp, AActor) -}; - -FState AOutsideLamp::States[] = -{ - // No, it's not bright. - S_NORMAL (LAMP, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AOutsideLamp, Strife, 43, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (3) - PROP_HeightFixed (80) - PROP_Flags (MF_SOLID) - PROP_StrifeType (248) -END_DEFAULTS - -// Pole Lantern ------------------------------------------------------------- - -class APoleLantern : public AActor -{ - DECLARE_ACTOR (APoleLantern, AActor) -}; - -FState APoleLantern::States[] = -{ - // No, it's not bright. - S_NORMAL (LANT, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (APoleLantern, Strife, 46, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (3) - PROP_HeightFixed (80) - PROP_Flags (MF_SOLID) - PROP_StrifeType (249) -END_DEFAULTS - -// Rock 1 ------------------------------------------------------------------- - -class ASRock1 : public AActor -{ - DECLARE_ACTOR (ASRock1, AActor) -}; - -FState ASRock1::States[] = -{ - S_NORMAL (ROK1, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ASRock1, Strife, 99, 0) - PROP_SpawnState (0) - PROP_Flags (MF_NOBLOCKMAP) - PROP_StrifeType (250) -END_DEFAULTS - -// Rock 2 ------------------------------------------------------------------- - -class ASRock2 : public AActor -{ - DECLARE_ACTOR (ASRock2, AActor) -}; - -FState ASRock2::States[] = -{ - S_NORMAL (ROK2, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ASRock2, Strife, 100, 0) - PROP_SpawnState (0) - PROP_Flags (MF_NOBLOCKMAP) - PROP_StrifeType (251) -END_DEFAULTS - -// Rock 3 ------------------------------------------------------------------- - -class ASRock3 : public AActor -{ - DECLARE_ACTOR (ASRock3, AActor) -}; - -FState ASRock3::States[] = -{ - S_NORMAL (ROK3, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ASRock3, Strife, 101, 0) - PROP_SpawnState (0) - PROP_Flags (MF_NOBLOCKMAP) - PROP_StrifeType (252) -END_DEFAULTS - -// Rock 4 ------------------------------------------------------------------- - -class ASRock4 : public AActor -{ - DECLARE_ACTOR (ASRock4, AActor) -}; - -FState ASRock4::States[] = -{ - S_NORMAL (ROK4, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ASRock4, Strife, 102, 0) - PROP_SpawnState (0) - PROP_Flags (MF_NOBLOCKMAP) - PROP_StrifeType (253) -END_DEFAULTS - -// Stick in Water ----------------------------------------------------------- - -class AStickInWater : public AActor -{ - DECLARE_ACTOR (AStickInWater, AActor) -}; - -FState AStickInWater::States[] = -{ - S_NORMAL (LOGW, 'A', 5, A_LoopActiveSound, &States[1]), - S_NORMAL (LOGW, 'B', 5, A_LoopActiveSound, &States[2]), - S_NORMAL (LOGW, 'C', 5, A_LoopActiveSound, &States[3]), - S_NORMAL (LOGW, 'D', 5, A_LoopActiveSound, &States[0]) -}; - -IMPLEMENT_ACTOR (AStickInWater, Strife, 215, 0) - PROP_SpawnState (0) - PROP_Flags (MF_NOBLOCKMAP) - PROP_Flags2 (MF2_FLOORCLIP) - PROP_StrifeType (254) - PROP_ActiveSound ("world/river") -END_DEFAULTS - -// Rubble 1 ----------------------------------------------------------------- - -class ARubble1 : public AActor -{ - DECLARE_ACTOR (ARubble1, AActor) -}; - -FState ARubble1::States[] = -{ - S_NORMAL (RUB1, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ARubble1, Strife, 29, 0) - PROP_SpawnState (0) - PROP_Flags (MF_NOBLOCKMAP|MF_NOCLIP) - PROP_StrifeType (255) -END_DEFAULTS - -// Rubble 2 ----------------------------------------------------------------- - -class ARubble2 : public AActor -{ - DECLARE_ACTOR (ARubble2, AActor) -}; - -FState ARubble2::States[] = -{ - S_NORMAL (RUB2, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ARubble2, Strife, 30, 0) - PROP_SpawnState (0) - PROP_Flags (MF_NOBLOCKMAP|MF_NOCLIP) - PROP_StrifeType (256) -END_DEFAULTS - -// Rubble 3 ----------------------------------------------------------------- - -class ARubble3 : public AActor -{ - DECLARE_ACTOR (ARubble3, AActor) -}; - -FState ARubble3::States[] = -{ - S_NORMAL (RUB3, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ARubble3, Strife, 31, 0) - PROP_SpawnState (0) - PROP_Flags (MF_NOBLOCKMAP|MF_NOCLIP) - PROP_StrifeType (257) -END_DEFAULTS - -// Rubble 4 ----------------------------------------------------------------- - -class ARubble4 : public AActor -{ - DECLARE_ACTOR (ARubble4, AActor) -}; - -FState ARubble4::States[] = -{ - S_NORMAL (RUB4, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ARubble4, Strife, 32, 0) - PROP_SpawnState (0) - PROP_Flags (MF_NOBLOCKMAP|MF_NOCLIP) - PROP_StrifeType (258) -END_DEFAULTS - -// Rubble 5 ----------------------------------------------------------------- - -class ARubble5 : public AActor -{ - DECLARE_ACTOR (ARubble5, AActor) -}; - -FState ARubble5::States[] = -{ - S_NORMAL (RUB5, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ARubble5, Strife, 36, 0) - PROP_SpawnState (0) - PROP_Flags (MF_NOBLOCKMAP|MF_NOCLIP) - PROP_StrifeType (259) -END_DEFAULTS - -// Rubble 6 ----------------------------------------------------------------- - -class ARubble6 : public AActor -{ - DECLARE_ACTOR (ARubble6, AActor) -}; - -FState ARubble6::States[] = -{ - S_NORMAL (RUB6, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ARubble6, Strife, 37, 0) - PROP_SpawnState (0) - PROP_Flags (MF_NOBLOCKMAP|MF_NOCLIP) - PROP_StrifeType (260) -END_DEFAULTS - -// Rubble 7 ----------------------------------------------------------------- - -class ARubble7 : public AActor -{ - DECLARE_ACTOR (ARubble7, AActor) -}; - -FState ARubble7::States[] = -{ - S_NORMAL (RUB7, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ARubble7, Strife, 41, 0) - PROP_SpawnState (0) - PROP_Flags (MF_NOBLOCKMAP|MF_NOCLIP) - PROP_StrifeType (261) -END_DEFAULTS - -// Rubble 8 ----------------------------------------------------------------- - -class ARubble8 : public AActor -{ - DECLARE_ACTOR (ARubble8, AActor) -}; - -FState ARubble8::States[] = -{ - S_NORMAL (RUB8, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ARubble8, Strife, 42, 0) - PROP_SpawnState (0) - PROP_Flags (MF_NOBLOCKMAP|MF_NOCLIP) - PROP_StrifeType (262) -END_DEFAULTS - -// Surgery Crab ------------------------------------------------------------- - -class ASurgeryCrab : public AActor -{ - DECLARE_ACTOR (ASurgeryCrab, AActor) -}; - -FState ASurgeryCrab::States[] = -{ - S_NORMAL (CRAB, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ASurgeryCrab, Strife, 117, 0) - PROP_SpawnState (0) - PROP_Flags (MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY) - PROP_RadiusFixed (20) - PROP_HeightFixed (16) - PROP_StrifeType (263) -END_DEFAULTS - -// Large Torch -------------------------------------------------------------- - -class ALargeTorch : public AActor -{ - DECLARE_ACTOR (ALargeTorch, AActor) -}; - -FState ALargeTorch::States[] = -{ - S_BRIGHT (LMPC, 'A', 4, NULL, &States[1]), - S_BRIGHT (LMPC, 'B', 4, NULL, &States[2]), - S_BRIGHT (LMPC, 'C', 4, NULL, &States[3]), - S_BRIGHT (LMPC, 'D', 4, NULL, &States[0]) -}; - -IMPLEMENT_ACTOR (ALargeTorch, Strife, 47, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (10) - PROP_HeightFixed (72) - PROP_Flags (MF_SOLID) - PROP_StrifeType (264) - PROP_ActiveSound ("world/smallfire") -END_DEFAULTS - -// Huge Torch -------------------------------------------------------------- - -class AHugeTorch : public AActor -{ - DECLARE_ACTOR (AHugeTorch, AActor) -}; - -FState AHugeTorch::States[] = -{ - S_BRIGHT (LOGS, 'A', 4, NULL, &States[1]), - S_BRIGHT (LOGS, 'B', 4, NULL, &States[2]), - S_BRIGHT (LOGS, 'C', 4, NULL, &States[3]), - S_BRIGHT (LOGS, 'D', 4, NULL, &States[0]) -}; - -IMPLEMENT_ACTOR (AHugeTorch, Strife, 50, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (10) - PROP_HeightFixed (80) - PROP_Flags (MF_SOLID) - PROP_StrifeType (265) - PROP_ActiveSound ("world/smallfire") -END_DEFAULTS - -// Palm Tree ---------------------------------------------------------------- - -class APalmTree : public AActor -{ - DECLARE_ACTOR (APalmTree, AActor) -}; - -FState APalmTree::States[] = -{ - S_NORMAL (TREE, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (APalmTree, Strife, 51, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (15) - PROP_HeightFixed (109) - PROP_Flags (MF_SOLID) - PROP_StrifeType (266) -END_DEFAULTS - -// Big Tree ---------------------------------------------------------------- - -class ABigTree2 : public AActor -{ - DECLARE_ACTOR (ABigTree2, AActor) -}; - -FState ABigTree2::States[] = -{ - S_NORMAL (TREE, 'B', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ABigTree2, Strife, 202, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (15) - PROP_HeightFixed (109) - PROP_Flags (MF_SOLID) - PROP_StrifeType (267) -END_DEFAULTS - -// Potted Tree ---------------------------------------------------------------- - -class APottedTree : public AActor -{ - DECLARE_ACTOR (APottedTree, AActor) -}; - -FState APottedTree::States[] = -{ - S_NORMAL (TREE, 'C', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (APottedTree, Strife, 203, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (15) - PROP_HeightFixed (64) - PROP_Flags (MF_SOLID) - PROP_StrifeType (268) -END_DEFAULTS - -// Tree Stub ---------------------------------------------------------------- - -class ATreeStub : public AActor -{ - DECLARE_ACTOR (ATreeStub, AActor) -}; - -FState ATreeStub::States[] = -{ - S_NORMAL (TRET, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ATreeStub, Strife, 33, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (15) - PROP_HeightFixed (80) - PROP_Flags (MF_SOLID) - PROP_StrifeType (269) -END_DEFAULTS - -// Short Bush --------------------------------------------------------------- - -class AShortBush : public AActor -{ - DECLARE_ACTOR (AShortBush, AActor) -}; - -FState AShortBush::States[] = -{ - S_NORMAL (BUSH, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AShortBush, Strife, 60, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (15) - PROP_HeightFixed (40) - PROP_Flags (MF_SOLID) - PROP_StrifeType (270) -END_DEFAULTS - -// Tall Bush --------------------------------------------------------------- - -class ATallBush : public AActor -{ - DECLARE_ACTOR (ATallBush, AActor) -}; - -FState ATallBush::States[] = -{ - S_NORMAL (SHRB, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ATallBush, Strife, 62, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (20) - PROP_HeightFixed (64) - PROP_Flags (MF_SOLID) - PROP_StrifeType (271) -END_DEFAULTS - -// Chimney Stack ------------------------------------------------------------ - -class AChimneyStack : public AActor -{ - DECLARE_ACTOR (AChimneyStack, AActor) -}; - -FState AChimneyStack::States[] = -{ - S_NORMAL (STAK, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AChimneyStack, Strife, 63, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (20) - PROP_HeightFixed (64) // This height does not fit the sprite - PROP_Flags (MF_SOLID) - PROP_StrifeType (272) -END_DEFAULTS - -// Barricade Column --------------------------------------------------------- - -class ABarricadeColumn : public AActor -{ - DECLARE_ACTOR (ABarricadeColumn, AActor) -}; - -FState ABarricadeColumn::States[] = -{ - S_NORMAL (BARC, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ABarricadeColumn, Strife, 69, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (16) - PROP_HeightFixed (128) - PROP_Flags (MF_SOLID) - PROP_StrifeType (273) -END_DEFAULTS - -// Pot ---------------------------------------------------------------------- - -class APot : public AActor -{ - DECLARE_ACTOR (APot, AActor) -}; - -FState APot::States[] = -{ - S_NORMAL (VAZE, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (APot, Strife, 165, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (12) - PROP_HeightFixed (24) - PROP_Flags (MF_SOLID) - PROP_StrifeType (274) -END_DEFAULTS - -// Pitcher ------------------------------------------------------------------ - -class APitcher : public AActor -{ - DECLARE_ACTOR (APitcher, AActor) -}; - -FState APitcher::States[] = -{ - S_NORMAL (VAZE, 'B', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (APitcher, Strife, 188, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (12) - PROP_HeightFixed (32) - PROP_Flags (MF_SOLID) - PROP_StrifeType (275) -END_DEFAULTS - -// Stool -------------------------------------------------------------------- - -class AStool : public AActor -{ - DECLARE_ACTOR (AStool, AActor) -}; - -FState AStool::States[] = -{ - S_NORMAL (STOL, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AStool, Strife, 189, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (6) - PROP_HeightFixed (24) - PROP_Flags (MF_SOLID) - PROP_StrifeType (276) -END_DEFAULTS - -// Metal Pot ---------------------------------------------------------------- - -class AMetalPot : public AActor -{ - DECLARE_ACTOR (AMetalPot, AActor) -}; - -FState AMetalPot::States[] = -{ - S_NORMAL (MPOT, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AMetalPot, Strife, 190, 0) - PROP_SpawnState (0) - PROP_Flags (MF_NOBLOCKMAP) - PROP_StrifeType (277) -END_DEFAULTS - -// Tub ---------------------------------------------------------------------- - -class ATub : public AActor -{ - DECLARE_ACTOR (ATub, AActor) -}; - -FState ATub::States[] = -{ - S_NORMAL (TUB1, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ATub, Strife, 191, 0) - PROP_SpawnState (0) - PROP_Flags (MF_NOBLOCKMAP) - PROP_StrifeType (278) -END_DEFAULTS - -// Anvil -------------------------------------------------------------------- - -class AAnvil : public AActor -{ - DECLARE_ACTOR (AAnvil, AActor) -}; - -FState AAnvil::States[] = -{ - S_NORMAL (ANVL, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AAnvil, Strife, 194, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (16) - PROP_HeightFixed (32) - PROP_Flags (MF_SOLID) - PROP_StrifeType (279) -END_DEFAULTS - -// Silver Tech Lamp ---------------------------------------------------------- - -class ATechLampSilver : public AActor -{ - DECLARE_ACTOR (ATechLampSilver, AActor) -}; - -FState ATechLampSilver::States[] = -{ - S_NORMAL (TECH, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ATechLampSilver, Strife, 196, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (11) - PROP_HeightFixed (64) - PROP_Flags (MF_SOLID) - PROP_StrifeType (280) -END_DEFAULTS - -// Brass Tech Lamp ---------------------------------------------------------- - -class ATechLampBrass : public AActor -{ - DECLARE_ACTOR (ATechLampBrass, AActor) -}; - -FState ATechLampBrass::States[] = -{ - S_NORMAL (TECH, 'B', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ATechLampBrass, Strife, 197, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (8) - PROP_HeightFixed (64) - PROP_Flags (MF_SOLID) - PROP_StrifeType (281) -END_DEFAULTS - -// Tray -------------------------------------------------------------------- - -class ATray : public AActor -{ - DECLARE_ACTOR (ATray, AActor) -}; - -FState ATray::States[] = -{ - S_NORMAL (TRAY, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ATray, Strife, 68, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (24) - PROP_HeightFixed (40) - PROP_Flags (MF_SOLID) - PROP_StrifeType (282) -END_DEFAULTS - -// AmmoFiller --------------------------------------------------------------- - -class AAmmoFiller : public AActor -{ - DECLARE_ACTOR (AAmmoFiller, AActor) -}; - -FState AAmmoFiller::States[] = -{ - S_NORMAL (AFED, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (AAmmoFiller, Strife, 228, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (12) - PROP_HeightFixed (24) - PROP_Flags (MF_SOLID) - PROP_StrifeType (283) -END_DEFAULTS - -// Sigil Banner ------------------------------------------------------------- - -class ASigilBanner : public AActor -{ - DECLARE_ACTOR (ASigilBanner, AActor) -}; - -FState ASigilBanner::States[] = -{ - S_NORMAL (SBAN, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ASigilBanner, Strife, 216, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (24) - PROP_HeightFixed (96) - PROP_Flags (MF_NOBLOCKMAP) // I take it this was once solid, yes? - PROP_StrifeType (284) -END_DEFAULTS - -// RebelBoots --------------------------------------------------------------- - -class ARebelBoots : public AActor -{ - DECLARE_ACTOR (ARebelBoots, AActor) -}; - -FState ARebelBoots::States[] = -{ - S_NORMAL (BOTR, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ARebelBoots, Strife, 217, 0) - PROP_SpawnState (0) - PROP_Flags (MF_NOBLOCKMAP) - PROP_StrifeType (285) -END_DEFAULTS - -// RebelHelmet -------------------------------------------------------------- - -class ARebelHelmet : public AActor -{ - DECLARE_ACTOR (ARebelHelmet, AActor) -}; - -FState ARebelHelmet::States[] = -{ - S_NORMAL (HATR, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ARebelHelmet, Strife, 218, 0) - PROP_SpawnState (0) - PROP_Flags (MF_NOBLOCKMAP) - PROP_StrifeType (286) -END_DEFAULTS - -// RebelShirt --------------------------------------------------------------- - -class ARebelShirt : public AActor -{ - DECLARE_ACTOR (ARebelShirt, AActor) -}; - -FState ARebelShirt::States[] = -{ - S_NORMAL (TOPR, 'A', -1, NULL, NULL) -}; - -IMPLEMENT_ACTOR (ARebelShirt, Strife, 219, 0) - PROP_SpawnState (0) - PROP_Flags (MF_NOBLOCKMAP) - PROP_StrifeType (287) -END_DEFAULTS - // Power Coupling ----------------------------------------------------------- class APowerCoupling : public AActor @@ -2612,113 +681,6 @@ void APowerCoupling::Die (AActor *source, AActor *inflictor) Destroy (); } -// Alien Bubble Column ------------------------------------------------------ - -class AAlienBubbleColumn : public AActor -{ - DECLARE_ACTOR (AAlienBubbleColumn, AActor) -}; - -FState AAlienBubbleColumn::States[] = -{ - S_NORMAL (BUBB, 'A', 4, A_LoopActiveSound, &States[0]) -}; - -IMPLEMENT_ACTOR (AAlienBubbleColumn, Strife, 221, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (16) - PROP_HeightFixed (128) - PROP_Flags (MF_SOLID) - PROP_StrifeType (290) - PROP_ActiveSound ("ambient/alien5") -END_DEFAULTS - -// Alien Floor Bubble ------------------------------------------------------- - -class AAlienFloorBubble : public AActor -{ - DECLARE_ACTOR (AAlienFloorBubble, AActor) -}; - -FState AAlienFloorBubble::States[] = -{ - S_NORMAL (BUBF, 'A', 4, A_LoopActiveSound, &States[0]) -}; - -IMPLEMENT_ACTOR (AAlienFloorBubble, Strife, 222, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (16) - PROP_HeightFixed (72) - PROP_Flags (MF_SOLID) - PROP_StrifeType (291) - PROP_ActiveSound ("ambient/alien6") -END_DEFAULTS - -// Alien Ceiling Bubble ----------------------------------------------------- - -class AAlienCeilingBubble : public AActor -{ - DECLARE_ACTOR (AAlienCeilingBubble, AActor) -}; - -FState AAlienCeilingBubble::States[] = -{ - S_NORMAL (BUBC, 'A', 4, A_LoopActiveSound, &States[0]) -}; - -IMPLEMENT_ACTOR (AAlienCeilingBubble, Strife, 223, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (16) - PROP_HeightFixed (72) - PROP_Flags (MF_SOLID|MF_SPAWNCEILING|MF_NOGRAVITY) - PROP_StrifeType (292) - PROP_ActiveSound ("ambient/alien4") -END_DEFAULTS - -// Alien Asp Climber -------------------------------------------------------- - -class AAlienAspClimber : public AActor -{ - DECLARE_ACTOR (AAlienAspClimber, AActor) -}; - -FState AAlienAspClimber::States[] = -{ - S_NORMAL (ASPR, 'A', 4, A_LoopActiveSound, &States[0]) -}; - -IMPLEMENT_ACTOR (AAlienAspClimber, Strife, 224, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (16) - PROP_HeightFixed (128) - PROP_Flags (MF_SOLID) - PROP_StrifeType (293) - PROP_ActiveSound ("ambient/alien3") -END_DEFAULTS - -// Alien Spider Light ------------------------------------------------------- - -class AAlienSpiderLight : public AActor -{ - DECLARE_ACTOR (AAlienSpiderLight, AActor) -}; - -FState AAlienSpiderLight::States[] = -{ - S_NORMAL (SPDL, 'A', 5, A_LoopActiveSound, &States[1]), - S_NORMAL (SPDL, 'B', 5, A_LoopActiveSound, &States[2]), - S_NORMAL (SPDL, 'C', 5, A_LoopActiveSound, &States[0]) -}; - -IMPLEMENT_ACTOR (AAlienSpiderLight, Strife, 225, 0) - PROP_SpawnState (0) - PROP_RadiusFixed (32) - PROP_HeightFixed (56) - PROP_Flags (MF_SOLID) - PROP_StrifeType (294) - PROP_ActiveSound ("ambient/alien1") -END_DEFAULTS - // Gibs for things that bleed ----------------------------------------------- class AMeat : public AActor @@ -2850,6 +812,46 @@ void A_LoopActiveSound (AActor *self) } } +void A_CheckTerrain (AActor *self) +{ + sector_t *sec = self->Sector; + + if (self->z == sec->floorplane.ZatPoint (self->x, self->y)) + { + if ((sec->special & 0xFF) == Damage_InstantDeath) + { + P_DamageMobj (self, NULL, NULL, 999, MOD_UNKNOWN); + } + else if ((sec->special & 0xFF) == Scroll_StrifeCurrent) + { + int anglespeed = sec->tag - 100; + fixed_t speed = (anglespeed % 10) << (FRACBITS - 4); + angle_t finean = (anglespeed / 10) << (32-3); + finean >>= ANGLETOFINESHIFT; + self->momx += FixedMul (speed, finecosine[finean]); + self->momy += FixedMul (speed, finesine[finean]); + } + } +} + +//============================================================================ +// +// A_ClearSoundTarget +// +//============================================================================ + +void A_ClearSoundTarget (AActor *self) +{ + AActor *actor; + + self->Sector->SoundTarget = NULL; + for (actor = self->Sector->thinglist; actor != NULL; actor = actor->snext) + { + actor->LastHeard = NULL; + } +} + + // Fire Droplet ------------------------------------------------------------- class AFireDroplet : public AActor @@ -2995,3 +997,5 @@ void A_Yeargh (AActor *self) { S_Sound (self, CHAN_VOICE, "misc/disruptordeath", 1, ATTN_NORM); } + + diff --git a/src/g_strife/a_thingstoblowup.cpp b/src/g_strife/a_thingstoblowup.cpp index cff94d6c8..87e2641dd 100644 --- a/src/g_strife/a_thingstoblowup.cpp +++ b/src/g_strife/a_thingstoblowup.cpp @@ -4,6 +4,7 @@ #include "c_console.h" #include "p_enemy.h" #include "a_action.h" +#include "gstrings.h" static FRandom pr_bang4cloud ("Bang4Cloud"); static FRandom pr_lightout ("LightOut"); @@ -14,11 +15,6 @@ void A_TossGib (AActor *); void A_LoopActiveSound (AActor *); void A_LightGoesOut (AActor *); -class ARubble1 : public AActor -{ - DECLARE_ACTOR (ARubble1, AActor) -}; - // A Cloud used for varius explosions --------------------------------------- // This actor has no direct equivalent in strife. To create this, Strife // spawned a spark and then changed its state to that of this explosion @@ -71,14 +67,14 @@ void A_Bang4Cloud (AActor *self) void A_GiveQuestItem (AActor *self) { - int questitem = (self->Speed >> FRACBITS) - 1; + int questitem = (self->Speed >> FRACBITS); // Give one of these quest items to every player in the game for (int i = 0; i < MAXPLAYERS; ++i) { if (playeringame[i]) { - AInventory *item = static_cast(Spawn (QuestItemClasses[questitem], 0,0,0)); + AInventory *item = static_cast(Spawn (QuestItemClasses[questitem-1], 0,0,0)); if (!item->TryPickup (players[i].mo)) { item->Destroy (); @@ -86,7 +82,11 @@ void A_GiveQuestItem (AActor *self) } } - const char *name = QuestItemClasses[questitem]->Meta.GetMetaString (AMETA_StrifeName); + char messageid[64]; + + sprintf(messageid, "TXT_QUEST_%d", questitem); + const char * name = GStrings[messageid]; + if (name != NULL) { C_MidPrint (name); @@ -272,7 +272,7 @@ void A_LightGoesOut (AActor *self) for (int i = 0; i < 8; ++i) { - foo = Spawn (self->x, self->y, self->z); + foo = Spawn("Rubble1", self->x, self->y, self->z); if (foo != NULL) { int t = pr_lightout() & 15; diff --git a/src/g_strife/a_zombie.cpp b/src/g_strife/a_zombie.cpp deleted file mode 100644 index ec90bd26c..000000000 --- a/src/g_strife/a_zombie.cpp +++ /dev/null @@ -1,90 +0,0 @@ -#include "actor.h" -#include "m_random.h" -#include "a_action.h" -#include "p_local.h" -#include "p_enemy.h" -#include "a_strifeglobal.h" - -void A_20e10 (AActor *); -void A_TossGib (AActor *); -void A_SpawnZombie (AActor *); - -// Zombie ------------------------------------------------------------------- - -class AZombie : public AStrifeHumanoid -{ - DECLARE_ACTOR (AZombie, AStrifeHumanoid) -}; - -FState AZombie::States[] = -{ -#define S_ZOMBIE_STND 0 - S_NORMAL (PEAS, 'A', 5, A_20e10, &States[S_ZOMBIE_STND]), - -#define S_ZOMBIE_PAIN (S_ZOMBIE_STND+1) - S_NORMAL (AGRD, 'A', 5, A_20e10, &States[S_ZOMBIE_PAIN]), - -#define S_ZOMBIE_DIE (S_ZOMBIE_PAIN+1) - S_NORMAL (GIBS, 'M', 5, A_TossGib, &States[S_ZOMBIE_DIE+1]), - S_NORMAL (GIBS, 'N', 5, A_XScream, &States[S_ZOMBIE_DIE+2]), - S_NORMAL (GIBS, 'O', 5, A_NoBlocking, &States[S_ZOMBIE_DIE+3]), - S_NORMAL (GIBS, 'P', 4, A_TossGib, &States[S_ZOMBIE_DIE+4]), - S_NORMAL (GIBS, 'Q', 4, A_TossGib, &States[S_ZOMBIE_DIE+5]), - S_NORMAL (GIBS, 'R', 4, A_TossGib, &States[S_ZOMBIE_DIE+6]), - S_NORMAL (GIBS, 'S', 4, A_TossGib, &States[S_ZOMBIE_DIE+7]), - S_NORMAL (GIBS, 'T', 4, A_TossGib, &States[S_ZOMBIE_DIE+8]), - S_NORMAL (GIBS, 'U', 5, NULL, &States[S_ZOMBIE_DIE+9]), - S_NORMAL (GIBS, 'V', 1400, NULL, NULL), -}; - -IMPLEMENT_ACTOR (AZombie, Strife, 169, 0) - PROP_SpawnState (S_ZOMBIE_STND) - PROP_PainState (S_ZOMBIE_PAIN) - PROP_DeathState (S_ZOMBIE_DIE) - - PROP_SpawnHealth (31) - PROP_RadiusFixed (20) - PROP_HeightFixed (56) - PROP_PainChance (0) - PROP_Flags (MF_SOLID|MF_SHOOTABLE) - PROP_Flags2 (MF2_FLOORCLIP|MF2_PASSMOBJ|MF2_PUSHWALL|MF2_MCROSS) - PROP_MinMissileChance (150) - PROP_MaxStepHeight (16) - PROP_MaxDropOffHeight (32) - PROP_Translation (TRANSLATION_Standard, 0) - PROP_StrifeType (28) - - PROP_DeathSound ("zombie/death") -END_DEFAULTS - -// Zombie Spawner ----------------------------------------------------------- - -class AZombieSpawner : public AActor -{ - DECLARE_ACTOR (AZombieSpawner, AActor) -}; - -FState AZombieSpawner::States[] = -{ - S_NORMAL (TNT1, 'A', 175, A_SpawnZombie, &States[0]) -}; - -IMPLEMENT_ACTOR (AZombieSpawner, Strife, 170, 0) - PROP_SpawnHealth (20) - PROP_Flags (MF_SHOOTABLE|MF_NOSECTOR) - PROP_SpawnState (0) - PROP_RenderStyle (STYLE_None) - PROP_StrifeType (30) - PROP_ActiveSound ("zombie/spawner") // Does Strife use this somewhere else? -END_DEFAULTS - -//============================================================================ -// -// A_SpawnZombie -// -//============================================================================ - -void A_SpawnZombie (AActor *self) -{ - Spawn (self->x, self->y, self->z); -} diff --git a/src/namedef.h b/src/namedef.h index 50c1073bd..e93b22847 100644 --- a/src/namedef.h +++ b/src/namedef.h @@ -84,7 +84,7 @@ xx(Extreme) // Damage types xx(Fire) -xx(Ice) +//xx(Ice) already defined above xx(Disintegrate) xx(Water) xx(Slime) diff --git a/src/p_conversation.cpp b/src/p_conversation.cpp index d821472e8..7b65b9a47 100644 --- a/src/p_conversation.cpp +++ b/src/p_conversation.cpp @@ -643,7 +643,7 @@ static void TakeStrifeItem (const TypeInfo *itemtype, int amount) return; // Don't take quest items. - if (itemtype->IsDescendantOf (RUNTIME_CLASS(AQuestItem))) + if (itemtype->IsDescendantOf (TypeInfo::FindType("QuestItem"))) return; // Don't take keys diff --git a/src/p_lnspec.cpp b/src/p_lnspec.cpp index c6f55e290..ccea1a58e 100644 --- a/src/p_lnspec.cpp +++ b/src/p_lnspec.cpp @@ -1393,7 +1393,16 @@ FUNC(LS_ACS_ExecuteAlways) FUNC(LS_ACS_LockedExecute) // ACS_LockedExecute (script, map, s_arg1, s_arg2, lock) { - if (arg4 && !P_CheckKeys (it, arg4, 1)) + if (arg4 && !P_CheckKeys (it, arg4, true)) + return false; + else + return LS_ACS_Execute (ln, it, backSide, arg0, arg1, arg2, arg3, 0); +} + +FUNC(LS_ACS_LockedExecuteDoor) +// ACS_LockedExecuteDoor (script, map, s_arg1, s_arg2, lock) +{ + if (arg4 && !P_CheckKeys (it, arg4, false)) return false; else return LS_ACS_Execute (ln, it, backSide, arg0, arg1, arg2, arg3, 0); @@ -2556,8 +2565,8 @@ lnSpecFunc LineSpecials[256] = LS_Door_Raise, LS_Door_LockedRaise, LS_Door_Animated, - LS_Autosave, // Autosave - LS_NOP, // 16 + LS_Autosave, + LS_NOP, // Transfer_WallLight LS_NOP, // 17 LS_NOP, // 18 LS_NOP, // 19 @@ -2626,7 +2635,7 @@ lnSpecFunc LineSpecials[256] = LS_ACS_Terminate, LS_ACS_LockedExecute, LS_ACS_ExecuteWithResult, - LS_NOP, // 85 + LS_ACS_LockedExecuteDoor, LS_NOP, // 86 LS_NOP, // 87 LS_NOP, // 88 diff --git a/src/p_lnspec.h b/src/p_lnspec.h index cbc922233..6aa3531ed 100644 --- a/src/p_lnspec.h +++ b/src/p_lnspec.h @@ -127,6 +127,7 @@ typedef enum { ACS_Terminate = 82, ACS_LockedExecute = 83, ACS_ExecuteWithResult = 84, + ACS_LockedExecuteDoor = 85, Polyobj_OR_RotateLeft = 90, Polyobj_OR_RotateRight = 91, diff --git a/src/p_map.cpp b/src/p_map.cpp index c34a434a4..4f96a48a9 100644 --- a/src/p_map.cpp +++ b/src/p_map.cpp @@ -2551,7 +2551,7 @@ BOOL PTR_AimTraverse (intercept_t* in) if ((th->flags3 & MF3_GHOST) && shootthing->player && // [RH] Be sure shootthing is a player shootthing->player->ReadyWeapon && - (shootthing->player->ReadyWeapon->WeaponFlags & WIF_HITS_GHOSTS)) + (shootthing->player->ReadyWeapon->flags2 & MF2_THRUGHOST)) { return true; } @@ -2695,7 +2695,7 @@ void P_LineAttack (AActor *t1, angle_t angle, fixed_t distance, hitGhosts = (t1->player != NULL && t1->player->ReadyWeapon != NULL && - (t1->player->ReadyWeapon->WeaponFlags & WIF_HITS_GHOSTS)); + (t1->player->ReadyWeapon->flags2 & MF2_THRUGHOST)); if (!Trace (t1->x, t1->y, shootz, t1->Sector, vx, vy, vz, distance, MF_SHOOTABLE, ML_BLOCKEVERYTHING, t1, trace, diff --git a/src/p_mobj.cpp b/src/p_mobj.cpp index 82187440c..3d5df1f47 100644 --- a/src/p_mobj.cpp +++ b/src/p_mobj.cpp @@ -89,6 +89,7 @@ static FRandom pr_spawnmapthing ("SpawnMapThing"); static FRandom pr_spawnpuff ("SpawnPuff"); static FRandom pr_spawnblood ("SpawnBlood"); static FRandom pr_splatter ("BloodSplatter"); +static FRandom pr_takedamage ("TakeDamage"); static FRandom pr_ripperblood ("RipperBlood"); static FRandom pr_chunk ("Chunk"); static FRandom pr_checkmissilespawn ("CheckMissileSpawn"); @@ -3051,6 +3052,7 @@ AActor *AActor::StaticSpawn (const TypeInfo *type, fixed_t ix, fixed_t iy, fixed actor->frame = st->GetFrame(); actor->renderflags = (actor->renderflags & ~RF_FULLBRIGHT) | st->GetFullbright(); actor->touching_sectorlist = NULL; // NULL head of sector list // phares 3/13/98 + actor->Speed = actor->GetClass()->Meta.GetMetaFixed(AMETA_FastSpeed, actor->Speed); // set subsector and/or block links actor->LinkToWorld (SpawningMapThing); @@ -4595,6 +4597,16 @@ int AActor::DoSpecialDamage (AActor *target, int damage) } else { + if (target->player) + { + int poisondamage = GetClass()->Meta.GetMetaInt(AMETA_PoisonDamage); + if (poisondamage > 0) + { + P_PoisonPlayer (target->player, this, this->target, poisondamage); + damage >>= 1; + } + } + return damage; } } @@ -4607,6 +4619,16 @@ int AActor::TakeSpecialDamage (AActor *inflictor, AActor *source, int damage, in // it needs to work. FState *death; + if (flags5 & MF5_NODAMAGE) + { + target = source; + if (PainState != NULL && pr_takedamage() < PainChance) + { + SetState (PainState); + } + return -1; + } + if (DeathState != NULL) { return damage; diff --git a/src/po_man.cpp b/src/po_man.cpp index d6cadc4ff..33c1d5382 100644 --- a/src/po_man.cpp +++ b/src/po_man.cpp @@ -194,7 +194,7 @@ void DRotatePoly::Tick () return; } m_Dist -= absSpeed; - if (m_Dist <= 0 && m_Dist+absSpeed>0) + if (m_Dist == 0) { polyobj_t *poly = GetPolyobj (m_PolyObj); if (poly->specialdata == this) diff --git a/src/thingdef.cpp b/src/thingdef.cpp index 65d50fbc4..149edb12f 100644 --- a/src/thingdef.cpp +++ b/src/thingdef.cpp @@ -69,6 +69,8 @@ #include "thingdef.h" +const TypeInfo *QuestItemClasses[31]; + extern TArray Decorations; @@ -221,6 +223,7 @@ static flagdef ActorFlags[]= DEFINE_FLAG(MF5, NODROPOFF, AActor, flags5), DEFINE_FLAG(MF5, BOUNCEONACTORS, AActor, flags5), DEFINE_FLAG(MF5, EXPLODEONWATER, AActor, flags5), + DEFINE_FLAG(MF5, NODAMAGE, AActor, flags5), // Effect flags DEFINE_FLAG(FX, VISIBILITYPULSE, AActor, effects), @@ -444,12 +447,14 @@ ACTOR(ClearShadow) ACTOR(GetHurt) ACTOR(TurretLook) ACTOR(KlaxonBlare) -ACTOR(20e10) +ACTOR(CheckTerrain) ACTOR(Countdown) ACTOR(AlertMonsters) +ACTOR(ClearSoundTarget) ACTOR(FireAssaultGun) ACTOR(PlaySound) ACTOR(PlayWeaponSound) +ACTOR(FLoopActiveSound) ACTOR(LoopActiveSound) ACTOR(StopSound) ACTOR(SeekerMissile) @@ -500,6 +505,7 @@ ACTOR(GiveToTarget) ACTOR(TakeFromTarget) ACTOR(JumpIfInTargetInventory) ACTOR(CountdownArg) +ACTOR(CustomMeleeAttack) #include "d_dehackedactions.h" @@ -620,8 +626,9 @@ AFuncDesc AFTable[]= FUNC(A_KlaxonBlare, NULL) FUNC(A_Countdown, NULL) FUNC(A_AlertMonsters, NULL) + FUNC(A_ClearSoundTarget, NULL) FUNC(A_FireAssaultGun, NULL) - {"A_CheckTerrain", A_20e10, NULL }, // This needs a better name! + FUNC(A_CheckTerrain, NULL ) // Only selected original weapon functions will be available. // All the attack pointers are somewhat tricky due to the way the flash state is handled @@ -642,6 +649,7 @@ AFuncDesc AFTable[]= FUNC(A_BulletAttack, NULL) FUNC(A_PlaySound, "S" ) FUNC(A_PlayWeaponSound, "S" ) + FUNC(A_FLoopActiveSound, NULL ) FUNC(A_LoopActiveSound, NULL ) FUNC(A_StopSound, NULL ) FUNC(A_SeekerMissile, "XX" ) @@ -684,6 +692,7 @@ AFuncDesc AFTable[]= FUNC(A_GiveToTarget, "Mx" ) FUNC(A_TakeFromTarget, "Mx" ) FUNC(A_CountdownArg, "X") + FUNC(A_CustomMeleeAttack, "XXXsty" ) }; //========================================================================== @@ -2079,17 +2088,6 @@ void ParseActorProperties (Baggage &bag) SC_ScriptError("\"%s\" is an unknown actor property\n", propname.GetChars()); } } - - // copy the THRUGHOST flag to the HITS_GHOSTS weapon flag - // Their meaning is synonymous so it really doesn't make sense - // to have two different flags for this - if (bag.Info->Class->IsDescendantOf(RUNTIME_CLASS(AWeapon))) - { - AWeapon * weapon=(AWeapon*)bag.Info->Defaults; - - if (weapon->flags2&MF2_THRUGHOST) weapon->WeaponFlags|=WIF_HITS_GHOSTS; - else weapon->WeaponFlags&=~WIF_HITS_GHOSTS; - } } //========================================================================== @@ -2248,12 +2246,40 @@ static void ActorSpawnID (AActor *defaults, Baggage &bag) //========================================================================== static void ActorConversationID (AActor *defaults, Baggage &bag) { + int convid; + SC_MustGetNumber(); - if (sc_Number<0 || sc_Number>344) + convid = sc_Number; + + // Handling for Strife teaser IDs - only of meaning for the standard items + // as PWADs cannot be loaded with the teasers. + if (SC_CheckString(",")) + { + SC_MustGetNumber(); + if ((gameinfo.flags & (GI_SHAREWARE|GI_TEASER2)) == (GI_SHAREWARE)) + convid=sc_Number; + + SC_MustGetStringName(","); + SC_MustGetNumber(); + if ((gameinfo.flags & (GI_SHAREWARE|GI_TEASER2)) == (GI_SHAREWARE|GI_TEASER2)) + convid=sc_Number; + + if (convid==-1) return; + } + if (convid<0 || convid>344) { SC_ScriptError ("ConversationID must be in the range [0,344]"); } - else StrifeTypes[sc_Number] = bag.Info->Class; + else StrifeTypes[convid] = bag.Info->Class; +} + +//========================================================================== +// +//========================================================================== +static void ActorTag (AActor *defaults, Baggage &bag) +{ + SC_MustGetString(); + bag.Info->Class->Meta.SetMetaString(AMETA_StrifeName, sc_String); } //========================================================================== @@ -2771,7 +2797,7 @@ static void ActorTranslation (AActor *defaults, Baggage &bag) { if (SC_CheckNumber()) { - int max = gameinfo.gametype==GAME_Strife? 6:2; + int max = (gameinfo.gametype==GAME_Strife || (bag.Info->GameFilter&GAME_Strife)) ? 6:2; if (sc_Number < 0 || sc_Number > max) { SC_ScriptError ("Translation must be in the range [0,%d]", max); @@ -2889,6 +2915,24 @@ static void ActorMaxDropoffHeight (AActor *defaults, Baggage &bag) defaults->MaxDropOffHeight=sc_Number; } +//========================================================================== +// +//========================================================================== +static void ActorPoisonDamage (AActor *defaults, Baggage &bag) +{ + SC_MustGetNumber(); + bag.Info->Class->Meta.SetMetaInt (AMETA_PoisonDamage, sc_Number); +} + +//========================================================================== +// +//========================================================================== +static void ActorFastSpeed (AActor *defaults, Baggage &bag) +{ + SC_MustGetFloat(); + bag.Info->Class->Meta.SetMetaFixed (AMETA_FastSpeed, fixed_t(sc_Float*FRACUNIT)); +} + //========================================================================== // //========================================================================== @@ -3143,6 +3187,15 @@ static void InventoryUsesound (AInventory *defaults, Baggage &bag) defaults->UseSound=S_FindSound(sc_String); } +//========================================================================== +// +//========================================================================== +static void InventoryGiveQuest (APuzzleItem *defaults, Baggage &bag) +{ + SC_MustGetNumber(); + bag.Info->Class->Meta.SetMetaInt(AIMETA_GiveQuest, sc_Number); +} + //========================================================================== // //========================================================================== @@ -3446,6 +3499,7 @@ static const ActorProps props[] = { "dropitem", ActorDropItem, RUNTIME_CLASS(AActor) }, { "explosiondamage", ActorExplosionDamage, RUNTIME_CLASS(AActor) }, { "explosionradius", ActorExplosionRadius, RUNTIME_CLASS(AActor) }, + { "fastspeed", ActorFastSpeed, RUNTIME_CLASS(AActor) }, { "game", ActorGame, RUNTIME_CLASS(AActor) }, { "gibhealth", ActorGibHealth, RUNTIME_CLASS(AActor) }, { "greetings", ActorGreetingsState, RUNTIME_CLASS(AActor) }, @@ -3456,6 +3510,7 @@ static const ActorProps props[] = { "ice", ActorIceState, RUNTIME_CLASS(AActor) }, { "inventory.amount", (apf)InventoryAmount, RUNTIME_CLASS(AInventory) }, { "inventory.defmaxamount", (apf)InventoryDefMaxAmount, RUNTIME_CLASS(AInventory) }, + { "inventory.givequest", (apf)InventoryGiveQuest, RUNTIME_CLASS(AInventory) }, { "inventory.icon", (apf)InventoryIcon, RUNTIME_CLASS(AInventory) }, { "inventory.maxamount", (apf)InventoryMaxAmount, RUNTIME_CLASS(AInventory) }, { "inventory.pickupmessage", (apf)InventoryPickupmsg, RUNTIME_CLASS(AInventory) }, @@ -3479,6 +3534,7 @@ static const ActorProps props[] = { "pain", ActorPainState, RUNTIME_CLASS(AActor) }, { "painchance", ActorPainChance, RUNTIME_CLASS(AActor) }, { "painsound", ActorPainSound, RUNTIME_CLASS(AActor) }, + { "poisondamage", ActorPoisonDamage, RUNTIME_CLASS(AActor) }, { "powerup.color", (apf)PowerupColor, RUNTIME_CLASS(APowerupGiver) }, { "powerup.duration", (apf)PowerupDuration, RUNTIME_CLASS(APowerupGiver) }, { "powerup.type", (apf)PowerupType, RUNTIME_CLASS(APowerupGiver) }, @@ -3496,6 +3552,7 @@ static const ActorProps props[] = { "spawnid", ActorSpawnID, RUNTIME_CLASS(AActor) }, { "speed", ActorSpeed, RUNTIME_CLASS(AActor) }, { "states", ActorStates, RUNTIME_CLASS(AActor) }, + { "tag", ActorTag, RUNTIME_CLASS(AActor) }, { "translation", ActorTranslation, RUNTIME_CLASS(AActor) }, { "weapon.ammogive", (apf)WeaponAmmoGive1, RUNTIME_CLASS(AWeapon) }, { "weapon.ammogive1", (apf)WeaponAmmoGive1, RUNTIME_CLASS(AWeapon) }, @@ -3626,4 +3683,12 @@ void FinishThingdef() } } } + + // Since these are defined in DECORATE now the table has to be initialized here. + for(int i=0;i<31;i++) + { + char fmt[20]; + sprintf(fmt, "QuestItem%d", i+1); + QuestItemClasses[i]=TypeInfo::FindType(fmt); + } } diff --git a/src/thingdef_codeptr.cpp b/src/thingdef_codeptr.cpp index cf9d9f06d..ce2875607 100644 --- a/src/thingdef_codeptr.cpp +++ b/src/thingdef_codeptr.cpp @@ -70,6 +70,7 @@ static FRandom pr_camissile ("CustomActorfire"); static FRandom pr_camelee ("CustomMelee"); static FRandom pr_cabullet ("CustomBullet"); static FRandom pr_cajump ("CustomJump"); +static FRandom pr_custommelee ("CustomMelee2"); static FRandom pr_cwbullet ("CustomWpBullet"); static FRandom pr_cwjump ("CustomWpJump"); static FRandom pr_cwpunch ("CustomWpPunch"); @@ -660,6 +661,44 @@ void A_CustomBulletAttack (AActor *self) } } +//========================================================================== +// +// A fully customizable melee attack +// +//========================================================================== +void A_CustomMeleeAttack (AActor *self) +{ + int index=CheckIndex(6); + if (index<0) return; + + int Multiplier = EvalExpressionI (StateParameters[index], self); + int Modulus = EvalExpressionI (StateParameters[index+1], self); + int Adder = EvalExpressionI (StateParameters[index+2], self); + int MeleeSound=StateParameters[index+3]; + const char * DamageType = (const char*)StateParameters[index+4]; + bool bleed = EvalExpressionN (StateParameters[index+5], self); + int mod; + + // This needs to be redesigned once the customizable damage type system is working + if (DamageType == NULL) mod=MOD_HIT; + else if (!stricmp(DamageType, "Fire")) mod=MOD_FIRE; + else if (!stricmp(DamageType, "Ice")) mod=MOD_ICE; + else if (!stricmp(DamageType, "Disintegrate")) mod=MOD_DISINTEGRATE; + else mod=MOD_HIT; + + if (!self->target) + return; + + A_FaceTarget (self); + if (self->CheckMeleeRange ()) + { + int damage = ((pr_custommelee()%Modulus)*Multiplier)+Adder; + if (MeleeSound) S_SoundID (self, CHAN_WEAPON, MeleeSound, 1, ATTN_NORM); + P_DamageMobj (self->target, self, self, damage, MOD_HIT); + if (bleed) P_TraceBleed (damage, self->target, self); + } +} + //========================================================================== // // State jump function @@ -1045,7 +1084,7 @@ void A_SpawnItem(AActor * self) if (index<0) return; const TypeInfo * missile= TypeInfo::FindType((const char *)StateParameters[index]); - int distance = EvalExpressionI (StateParameters[index+1], self); + fixed_t distance = EvalExpressionF (StateParameters[index+1], self); fixed_t zheight = fixed_t(EvalExpressionF (StateParameters[index+2], self) * FRACUNIT); bool useammo = EvalExpressionN (StateParameters[index+3], self); @@ -1263,7 +1302,7 @@ void A_SetTranslucent(AActor * self) if (mode != STYLE_Fuzzy) { if (self->alpha == 0) mode = STYLE_None; - else if (mode == STYLE_Translucent && self->alpha == FRACUNIT) mode = STYLE_Normal; + else if (mode == STYLE_Translucent && self->alpha >= FRACUNIT) mode = STYLE_Normal; } self->RenderStyle=mode; diff --git a/wadsrc/decorate/decorate.txt b/wadsrc/decorate/decorate.txt index 4ee7eee48..3b0b0ee8b 100644 --- a/wadsrc/decorate/decorate.txt +++ b/wadsrc/decorate/decorate.txt @@ -23,3 +23,14 @@ #include "actors/hexen/puzzleitems.txt" #include "actors/hexen/scriptprojectiles.txt" #include "actors/hexen/speedboots.txt" + +#include "actors/strife/beggars.txt" +#include "actors/strife/merchants.txt" +#include "actors/strife/peasants.txt" +#include "actors/strife/questitems.txt" +#include "actors/strife/ratbuddy.txt" +#include "actors/strife/strifearmor.txt" +#include "actors/strife/strifeitems.txt" +#include "actors/strife/strifekeys.txt" +#include "actors/strife/strifestuff.txt" +#include "actors/strife/zombie.txt" diff --git a/wadsrc/decorate/hexen/hexenspecialdecs.txt b/wadsrc/decorate/hexen/hexenspecialdecs.txt index b129a8f6b..c387cd72d 100644 --- a/wadsrc/decorate/hexen/hexenspecialdecs.txt +++ b/wadsrc/decorate/hexen/hexenspecialdecs.txt @@ -102,8 +102,7 @@ ACTOR ZTwinedTorchUnlit : ZTwinedTorch 117 States { Spawn: - TWTR I -1 - Stop + Goto Super.Inactive } } @@ -135,8 +134,7 @@ ACTOR ZWallTorchUnlit : ZWallTorch 55 States { Spawn: - WLTR I -1 - Stop + Goto Super.Inactive } } @@ -221,8 +219,7 @@ ACTOR ZFireBullUnlit : ZFireBull 8043 States { Spawn: - FBUL H -1 - Stop + Goto Super.Inactive+2 } } @@ -279,14 +276,13 @@ ACTOR ZCauldron : SwitchableDecoration 8069 } } -ACTOR ZCauldronUnlit : ZCauldron +ACTOR ZCauldronUnlit : ZCauldron 8070 { Game Hexen States { Spawn: - CDRN A -1 - Stop + Goto Super.Inactive } } diff --git a/wadsrc/decorate/hexen/scriptprojectiles.txt b/wadsrc/decorate/hexen/scriptprojectiles.txt index 2cf8925e9..9ad06b07b 100644 --- a/wadsrc/decorate/hexen/scriptprojectiles.txt +++ b/wadsrc/decorate/hexen/scriptprojectiles.txt @@ -1 +1,135 @@ -// +// Fire Ball ---------------------------------------------------------------- + +ACTOR FireBall +{ + Game Hexen + SpawnID 10 + Speed 2 + Radius 8 + Height 8 + Damage 4 + DamageType Fire + +NOBLOCKMAP +NOGRAVITY +DROPOFF +MISSILE + +NOTELEPORT + RenderStyle Add + DeathSound "Fireball" + States + { + Spawn: + FBL1 AB 4 Bright + Loop + Death: + XPL1 ABCDEF 4 Bright + Stop + } +} + +// Arrow -------------------------------------------------------------------- + +ACTOR Arrow +{ + Game Hexen + SpawnID 50 + Speed 6 + Radius 8 + Height 4 + Damage 4 + +NOBLOCKMAP +NOGRAVITY +DROPOFF +MISSILE + +NOTELEPORT + States + { + Spawn: + ARRW A -1 + Stop + Death: + ARRW A 1 + Stop + } +} + +// Dart --------------------------------------------------------------------- + +ACTOR Dart +{ + Game Hexen + SpawnID 51 + Speed 6 + Radius 8 + Height 4 + Damage 2 + +NOBLOCKMAP +NOGRAVITY +DROPOFF +MISSILE + +NOTELEPORT + States + { + Spawn: + DART A -1 + Stop + Death: + DART A 1 + Stop + } +} + +// Poison Dart -------------------------------------------------------------- + +ACTOR PoisonDart : Dart +{ + Game Hexen + SpawnID 52 + PoisonDamage 20 +} + +// Ripper Ball -------------------------------------------------------------- + +ACTOR RipperBall +{ + Game Hexen + SpawnID 53 + Speed 6 + Radius 8 + Damage 2 + +NOBLOCKMAP +NOGRAVITY +DROPOFF +MISSILE + +NOTELEPORT +RIPPER + States + { + Spawn: + RIPP ABC 3 + Loop + Death: + CFCF Q 4 Bright + CFCF R 3 Bright + CFCF S 4 Bright + CFCF T 3 Bright + CFCF U 4 Bright + CFCF V 3 Bright + CFCF W 4 Bright + CFCF X 3 Bright + CFCF Y 4 Bright + CFCF Z 3 Bright + Stop + } +} + +// Projectile Blade --------------------------------------------------------- + +ACTOR ProjectileBlade +{ + Game Hexen + SpawnID 64 + Speed 6 + Radius 6 + Height 6 + Damage 3 + +NOBLOCKMAP +NOGRAVITY +DROPOFF +MISSILE + +NOTELEPORT + States + { + Spawn: + BLAD A -1 + Stop + Death: + BLAD A 1 + Stop + } +} + diff --git a/wadsrc/decorate/strife/beggars.txt b/wadsrc/decorate/strife/beggars.txt new file mode 100644 index 000000000..d730780e8 --- /dev/null +++ b/wadsrc/decorate/strife/beggars.txt @@ -0,0 +1,96 @@ + +// Base class for the beggars --------------------------------------------- + +ACTOR Beggar : StrifeHumanoid +{ + Health 20 + PainChance 250 + Speed 3 + Radius 20 + Height 56 + Monster + +JUSTHIT + -COUNTKILL + +NOSPLASHALERT + MinMissileChance 150 + Tag "Beggar" + MaxStepHeight 16 + MaxDropoffHeight 32 + + AttackSound "beggar/attack" + PainSound "beggar/pain" + DeathSound "beggar/death" + States + { + Spawn: + BEGR A 10 A_Look + Loop + See: + BEGR AABBCC 4 A_Wander + Loop + Melee: + BEGR D 8 + BEGR D 8 A_CustomMeleeAttack(2, 5, 2) + BEGR E 1 A_Chase + BEGR D 8 A_SentinelRefire + Loop + Pain: + BEGR A 3 A_Pain + BEGR A 3 A_Chase + Goto Melee + Death: + BEGR F 4 + BEGR G 4 A_Scream + BEGR H 4 + BEGR I 4 A_NoBlocking + BEGR JKLM 4 + BEGR N -1 + Stop + XDeath: + BEGR F 5 A_TossGib + GIBS M 5 A_TossGib + GIBS N 5 A_XScream + GIBS O 5 A_NoBlocking + GIBS PQRST 4 A_TossGib + GIBS U 5 + GIBS V 1400 + Stop + } +} + + +// Beggars ----------------------------------------------------------------- + +ACTOR Beggar1 : Beggar 141 +{ + Game Strife + ConversationID 38, 37, 38 +} + + +ACTOR Beggar2 : Beggar 155 +{ + Game Strife + ConversationID 39, 38, 39 +} + + +ACTOR Beggar3 : Beggar 156 +{ + Game Strife + ConversationID 40, 39, 40 +} + + +ACTOR Beggar4 : Beggar 157 +{ + Game Strife + ConversationID 41, 40, 41 +} + + +ACTOR Beggar5 : Beggar 158 +{ + Game Strife + ConversationID 42, 41, 42 +} diff --git a/wadsrc/decorate/strife/merchants.txt b/wadsrc/decorate/strife/merchants.txt new file mode 100644 index 000000000..e49db9eee --- /dev/null +++ b/wadsrc/decorate/strife/merchants.txt @@ -0,0 +1,99 @@ +// Base class for the merchants --------------------------------------------- + +ACTOR Merchant +{ + Health 10000000 + PainChance 256 // a merchant should always enter the pain state when getting hurt + Radius 20 + Height 56 + Mass 5000 + +SOLID + +SHOOTABLE + +NOTDMATCH + +NOSPLASHALERT + +NODAMAGE + States + { + Spawn: + MRST A 10 A_Look2 + Loop + MRLK A 30 A_ActiveSound + Loop + MRLK B 30 + Loop + MRBD ABCDEDCB 4 + MRBD A 5 + MRBD F 6 + Loop + See: + Pain: + MRPN A 3 A_AlertMonsters + MRPN B 3 A_Pain + MRPN C 3 + MRPN D 9 Door_CloseWaitOpen(999, 64, 960) + MRPN C 4 + MRPN B 3 + MRPN A 3 A_ClearSoundTarget + Goto Spawn + Yes: + MRYS A 20 + // Fall through + Greetings: + MRGT ABCDEFGHI 5 + Goto Spawn + No: + MRNO AB 6 + MRNO C 10 + MRNO BA 6 + Goto Greetings + } +} + + +// Weapon Smith ------------------------------------------------------------- + +ACTOR WeaponSmith : Merchant 116 +{ + Game Strife + ConversationID 2 + PainSound "smith/pain" + Tag "Weapon_Smith" +} + + +// Bar Keep ----------------------------------------------------------------- + +ACTOR BarKeep : Merchant 72 +{ + Game Strife + Translation 4 + ConversationID 3 + PainSound "barkeep/pain" + ActiveSound "barkeep/active" + Tag "Bar_Keep" +} + + +// Armorer ------------------------------------------------------------------ + +ACTOR Armorer : Merchant 73 +{ + Game Strife + Translation 5 + ConversationID 4 + PainSound "armorer/pain" + Tag "Armorer" +} + + +// Medic -------------------------------------------------------------------- + +ACTOR Medic : Merchant 74 +{ + Game Strife + Translation 6 + ConversationID 5 + PainSound "medic/pain" + Tag "Medic" +} + diff --git a/wadsrc/decorate/strife/peasants.txt b/wadsrc/decorate/strife/peasants.txt new file mode 100644 index 000000000..463a30cea --- /dev/null +++ b/wadsrc/decorate/strife/peasants.txt @@ -0,0 +1,223 @@ + +// Peasant Base Class ------------------------------------------------------- + +ACTOR Peasant : StrifeHumanoid +{ + Health 31 + PainChance 200 + Speed 8 + Radius 20 + Height 56 + Monster + +FRIENDLY + -COUNTKILL + +NOSPLASHALERT + MinMissileChance 150 + MaxStepHeight 16 + MaxDropoffHeight 32 + SeeSound "peasant/sight" + AttackSound "peasant/attack" + PainSound "peasant/pain" + DeathSound "peasant/death" + States + { + Spawn: + PEAS A 10 A_Look2 + Loop + See: + PEAS AABBCCDD 5 A_Wander + Loop + Melee: + PEAS E 10 A_FaceTarget + PEAS F 8 A_CustomMeleeAttack(2, 5, 2) + PEAS E 8 + Goto See + Pain: + PEAS O 3 + PEAS O 3 A_Pain + Goto Melee + Wound: + PEAS G 5 + PEAS H 10 A_GetHurt + PEAS I 6 + Goto Wound+1 + Death: + PEAS G 5 + PEAS H 5 A_Scream + PEAS I 6 + PEAS J 5 A_NoBlocking + PEAS K 5 + PEAS L 6 + PEAS M 8 + PEAS N 1400 + GIBS U 5 + GIBS V 1400 + Stop + XDeath: + GIBS M 5 A_TossGib + GIBS N 5 A_XScream + GIBS O 5 A_NoBlocking + GIBS PQRS 4 A_TossGib + Goto Death+8 + } +} + +// Peasant Variant 1 -------------------------------------------------------- + +ACTOR Peasant1 : Peasant 3004 +{ + Game Strife + ConversationID 6 + Speed 4 +} + +ACTOR Peasant2 : Peasant 130 +{ + Game Strife + ConversationID 7 + Speed 5 +} + +ACTOR Peasant3 : Peasant 131 +{ + Game Strife + ConversationID 8 + Speed 5 +} + +ACTOR Peasant4 : Peasant 65 +{ + Game Strife + Translation 0 + ConversationID 9 + Speed 7 +} + +ACTOR Peasant5 : Peasant 132 +{ + Game Strife + Translation 0 + ConversationID 10 + Speed 7 +} + +ACTOR Peasant6 : Peasant 133 +{ + Game Strife + Translation 0 + ConversationID 11 + Speed 7 +} + +ACTOR Peasant7 : Peasant 66 +{ + Game Strife + Translation 2 + ConversationID 12 +} + +ACTOR Peasant8 : Peasant 134 +{ + Game Strife + Translation 2 + ConversationID 13 +} + +ACTOR Peasant9 : Peasant 135 +{ + Game Strife + Translation 2 + ConversationID 14 +} + +ACTOR Peasant10 : Peasant 67 +{ + Game Strife + Translation 1 + ConversationID 15 +} + +ACTOR Peasant11 : Peasant 136 +{ + Game Strife + Translation 1 + ConversationID 16 +} + +ACTOR Peasant12 : Peasant 137 +{ + Game Strife + Translation 1 + ConversationID 17 +} + +ACTOR Peasant13 : Peasant 172 +{ + Game Strife + Translation 3 + ConversationID 18 +} + +ACTOR Peasant14 : Peasant 173 +{ + Game Strife + Translation 3 + ConversationID 19 +} + +ACTOR Peasant15 : Peasant 174 +{ + Game Strife + Translation 3 + ConversationID 20 +} + +ACTOR Peasant16 : Peasant 175 +{ + Game Strife + Translation 5 + ConversationID 21 +} + +ACTOR Peasant17 : Peasant 176 +{ + Game Strife + Translation 5 + ConversationID 22 +} + +ACTOR Peasant18 : Peasant 177 +{ + Game Strife + Translation 5 + ConversationID 23 +} + +ACTOR Peasant19 : Peasant 178 +{ + Game Strife + Translation 4 + ConversationID 24 +} + +ACTOR Peasant20 : Peasant 179 +{ + Game Strife + Translation 4 + ConversationID 25 +} + +ACTOR Peasant21 : Peasant 180 +{ + Game Strife + Translation 4 + ConversationID 26 +} + +ACTOR Peasant22 : Peasant 181 +{ + Game Strife + Translation 6 + ConversationID 27 +} + diff --git a/wadsrc/decorate/strife/questitems.txt b/wadsrc/decorate/strife/questitems.txt new file mode 100644 index 000000000..b06cdfaa8 --- /dev/null +++ b/wadsrc/decorate/strife/questitems.txt @@ -0,0 +1,206 @@ +/* + * Quest Item Usage: + * + * 1 You got Beldin's ring + * 2 You got the Chalice + * 3 You got 300 gold, so it's time to visit Irale and the governor + * 4 Accepted the governor's power coupling mission + * 5 Accepted the governor's mission to kill Derwin + * 6 You broke the Front's power coupling + * 7 You took out the scanning team + * 8 You got the broken power coupling + * 9 You got the ear + * 10 You got the prison pass + * 11 You got the prison key + * 12 You got the severed hand + * 13 You've freed the prisoners! + * 14 You've Blown Up the Crystal + * 15 You got the guard uniform + * 16 You've Blown Up the Gates (/Piston) + * 17 You watched the Sigil slideshow on map10 + * 18 You got the Oracle pass + * 19 You met Quincy and talked to him about the Bishop + * 20 + * 21 You Killed the Bishop! + * 22 The Oracle has told you to kill Macil + * 23 You've Killed The Oracle! + * 24 You Killed Macil! + * 25 You've destroyed the Converter! + * 26 You've Killed The Loremaster! + * 27 You've Blown Up the Computer + * 28 You got the catacomb key + * 29 You destroyed the mind control device in the mines + * 30 + * 31 + */ + +ACTOR QuestItem : Inventory +{ + States + { + Spawn: + TOKN A -1 + Stop + } +} + +// Quest Items ------------------------------------------------------------- + +ACTOR QuestItem1 : QuestItem +{ + ConversationID 312, 293, 310 +} + +ACTOR QuestItem2 : QuestItem +{ + ConversationID 313, 294, 311 +} + +ACTOR QuestItem3 : QuestItem +{ + ConversationID 314, 295, 312 +} + +ACTOR QuestItem4 : QuestItem +{ + ConversationID 315, 296, 313 + Tag "quest4" +} + +ACTOR QuestItem5 : QuestItem +{ + ConversationID 316, 297, 314 + Tag "quest5" +} + +ACTOR QuestItem6 : QuestItem +{ + ConversationID 317, 298, 315 + Tag "quest4" +} + +ACTOR QuestItem7 : QuestItem +{ + ConversationID 318, -1, -1 +} + +ACTOR QuestItem8 : QuestItem +{ + ConversationID 319, -1, -1 +} + +ACTOR QuestItem9 : QuestItem +{ + ConversationID 320, -1, -1 +} + +ACTOR QuestItem10 : QuestItem +{ + ConversationID 321, -1, -1 +} + +ACTOR QuestItem11 : QuestItem +{ + ConversationID 322, -1, -1 +} + +ACTOR QuestItem12 : QuestItem +{ + ConversationID 323, -1, -1 +} + +ACTOR QuestItem13 : QuestItem +{ + ConversationID 324, -1, -1 +} + +ACTOR QuestItem14 : QuestItem +{ + ConversationID 325, -1, -1 +} + +ACTOR QuestItem15 : QuestItem +{ + ConversationID 326, -1, -1 +} + +ACTOR QuestItem16 : QuestItem +{ + ConversationID 327, -1, -1 +} + +ACTOR QuestItem17 : QuestItem +{ + ConversationID 328, -1, -1 +} + +ACTOR QuestItem18 : QuestItem +{ + ConversationID 329, -1, -1 +} + +ACTOR QuestItem19 : QuestItem +{ + ConversationID 330, -1, -1 +} + +ACTOR QuestItem20 : QuestItem +{ + ConversationID 331, -1, -1 +} + +ACTOR QuestItem21 : QuestItem +{ + ConversationID 332, -1, -1 +} + +ACTOR QuestItem22 : QuestItem +{ + ConversationID 333, -1, -1 +} + +ACTOR QuestItem23 : QuestItem +{ + ConversationID 334, -1, -1 +} + +ACTOR QuestItem24 : QuestItem +{ + ConversationID 335, -1, -1 +} + +ACTOR QuestItem25 : QuestItem +{ + ConversationID 336, -1, -1 +} + +ACTOR QuestItem26 : QuestItem +{ + ConversationID 337, -1, -1 +} + +ACTOR QuestItem27 : QuestItem +{ + ConversationID 338, -1, -1 +} + +ACTOR QuestItem28 : QuestItem +{ + ConversationID 339, -1, -1 +} + +ACTOR QuestItem29 : QuestItem +{ + ConversationID 340, -1, -1 +} + +ACTOR QuestItem30 : QuestItem +{ + ConversationID 341, -1, -1 +} + +ACTOR QuestItem31 : QuestItem +{ + ConversationID 342, -1, -1 +} + diff --git a/wadsrc/decorate/strife/ratbuddy.txt b/wadsrc/decorate/strife/ratbuddy.txt new file mode 100644 index 000000000..4d5289070 --- /dev/null +++ b/wadsrc/decorate/strife/ratbuddy.txt @@ -0,0 +1,37 @@ + +ACTOR RatBuddy 85 +{ + Game Strife + ConversationID 202, 196, 200 + Health 5 + Speed 13 + Radius 10 + Height 16 + +SHOOTABLE + +NOBLOOD +FLOORCLIP +CANPASS + +ISMONSTER +INCOMBAT + MinMissileChance 150 + MaxStepHeight 16 + MaxDropoffHeight 32 + Tag "rat_buddy" + SeeSound "rat/sight" + DeathSound "rat/death" + ActiveSound "rat/active" + States + { + Spawn: + RATT A 10 A_Look + Loop + See: + RATT AABB 4 A_Chase + Loop + Melee: + RATT A 8 A_Wander + RATT B 4 A_Wander + Goto See + Death: + MEAT Q 700 + Stop + } +} + diff --git a/wadsrc/decorate/strife/strifearmor.txt b/wadsrc/decorate/strife/strifearmor.txt new file mode 100644 index 000000000..3da5e7381 --- /dev/null +++ b/wadsrc/decorate/strife/strifearmor.txt @@ -0,0 +1,49 @@ + +ACTOR MetalArmor : BasicArmorPickup 2019 +{ + Game Strife + SpawnID 69 + ConversationID 129, 125, 128 + Radius 20 + Height 16 + +FLOORCLIP + +INVENTORY.AUTOACTIVATE + +INVENTORY.INVBAR + Inventory.MaxAmount 3 + Inventory.Icon "I_ARM1" + Inventory.PickupMessage "$TXT_METALARMOR" + Armor.SaveAmount 200 + Armor.SavePercent 50 + Tag "Metal_Armor" + States + { + Spawn: + ARM3 A -1 + Stop + } +} + +ACTOR LeatherArmor : BasicArmorPickup 2018 +{ + Game Strife + SpawnID 68 + ConversationID 130, 126, 129 + Radius 20 + Height 16 + +FLOORCLIP + +INVENTORY.AUTOACTIVATE + +INVENTORY.INVBAR + Inventory.MaxAmount 5 + Inventory.Icon "I_ARM2" + Inventory.PickupMessage "$TXT_LEATHERARMOR" + Armor.SaveAmount 100 + Armor.SavePercent 33.33333 + Tag "Leather_Armor" + States + { + Spawn: + ARM4 A -1 + Stop + } +} + diff --git a/wadsrc/decorate/strife/strifeitems.txt b/wadsrc/decorate/strife/strifeitems.txt new file mode 100644 index 000000000..ede08b052 --- /dev/null +++ b/wadsrc/decorate/strife/strifeitems.txt @@ -0,0 +1,335 @@ +// Med patch ----------------------------------------------------------------- + +ACTOR MedPatch : HealthPickup 2011 +{ + Game Strife + ConversationID 125, 121, 124 + Health 10 + +FLOORCLIP + +INVENTORY.INVBAR + Inventory.MaxAmount 20 + Tag "Med_patch" + Inventory.Icon "I_STMP" + Inventory.PickupMessage "$TXT_MEDPATCH" + States + { + Spawn: + STMP A -1 + Stop + } +} + + +// Medical Kit --------------------------------------------------------------- + +ACTOR MedicalKit : HealthPickup 2012 +{ + Game Strife + ConversationID 126, 122, 125 + Health 25 + +FLOORCLIP + +INVENTORY.INVBAR + Inventory.MaxAmount 15 + Tag "Medical_kit" + Inventory.Icon "I_MDKT" + Inventory.PickupMessage "$TXT_MEDICALKIT" + States + { + Spawn: + MDKT A -1 + Stop + } +} + + +// Surgery Kit -------------------------------------------------------------- + +ACTOR SurgeryKit : HealthPickup 83 +{ + Game Strife + ConversationID 127, 123, 126 + +FLOORCLIP + +INVENTORY.INVBAR + Health -100 + Inventory.MaxAmount 5 + Tag "Surgery_Kit" // "full_health" in the Teaser + Inventory.Icon "I_FULL" + Inventory.PickupMessage "$TXT_SURGERYKIT" + States + { + Spawn: + FULL AB 35 + Loop + } +} + + +// StrifeMap ---------------------------------------------------------------- + +ACTOR StrifeMap : MapRevealer 2026 +{ + Game Strife + SpawnID 137 + ConversationID 164, 160, 163 + +FLOORCLIP + Inventory.PickupSound "misc/p_pkup" + Inventory.PickupMessage "$TXT_STRIFEMAP" + States + { + Spawn: + SMAP AB 6 Bright + Loop + } +} + + +// Beldin's Ring ------------------------------------------------------------ + +ACTOR BeldinsRing : Inventory +{ + Game Strife + +NOTDMATCH + +FLOORCLIP + +INVENTORY.INVBAR + ConversationID 173, 165, 169 + Tag "ring" + Inventory.Icon "I_RING" + Inventory.GiveQuest 1 + Inventory.PickupMessage "$TXT_BELDINSRING" + States + { + Spawn: + RING A -1 + Stop + } +} + + +// Offering Chalice --------------------------------------------------------- + +ACTOR OfferingChalice : Inventory 205 +{ + Game Strife + +DROPPED + +FLOORCLIP + +INVENTORY.INVBAR + ConversationID 174, 166, 170 + Radius 10 + Height 16 + Tag "Offering_Chalice" + Inventory.Icon "I_RELC" + Inventory.PickupMessage "$TXT_OFFERINGCHALICE" + Inventory.GiveQuest 2 + States + { + Spawn: + RELC A -1 + Stop + } +} + + +// Ear ---------------------------------------------------------------------- + +ACTOR Ear : Inventory +{ + Game Strife + +FLOORCLIP + +INVENTORY.INVBAR + ConversationID 175, 167, 171 + Tag "ear" + Inventory.Icon "I_EARS" + Inventory.PickupMessage "$TXT_EAR" + Inventory.GiveQuest 9 + States + { + Spawn: + EARS A -1 + Stop + } +} + + +// Broken Power Coupling ---------------------------------------------------- + +ACTOR BrokenPowerCoupling : Inventory 226 +{ + Game Strife + ConversationID 289, -1, -1 + Health 40 + +DROPPED + +FLOORCLIP + +INVENTORY.INVBAR + Radius 16 + Height 16 + Tag "BROKEN_POWER_COUPLING" + Inventory.MaxAmount 1 + Inventory.Icon "I_COUP" + Inventory.PickupMessage "$TXT_BROKENCOUPLING" + Inventory.GiveQuest 8 + States + { + Spawn: + COUP C -1 + Stop + } +} + + +// Shadow Armor ------------------------------------------------------------- + +ACTOR ShadowArmor : PowerupGiver 2024 +{ + Game Strife + SpawnID 135 + ConversationID 160, 156, 159 + +FLOORCLIP + +VISIBILITYPULSE + +INVENTORY.INVBAR + -INVENTORY.FANCYPICKUPSOUND + RenderStyle Translucent + Tag "Shadow_armor" + Inventory.MaxAmount 2 + Powerup.Type "Shadow" + Inventory.Icon "I_SHD1" + Inventory.PickupSound "misc/i_pkup" + Inventory.PickupMessage "$TXT_SHADOWARMOR" + States + { + Spawn: + SHD1 A -1 Bright + Stop + } +} + + +// Environmental suit ------------------------------------------------------- + +ACTOR EnvironmentalSuit : PowerupGiver 2025 +{ + Game Strife + SpawnID 136 + ConversationID 161, 157, 160 + +FLOORCLIP + +INVENTORY.INVBAR + -INVENTORY.FANCYPICKUPSOUND + Inventory.MaxAmount 5 + Powerup.Type "Mask" + Tag "Environmental_Suit" + Inventory.Icon "I_MASK" + Inventory.PickupSound "misc/i_pkup" + Inventory.PickupMessage "$TXT_ENVSUIT" + States + { + Spawn: + MASK A -1 + Stop + } +} + + +// Guard Uniform ------------------------------------------------------------ + +ACTOR GuardUniform : Inventory 90 +{ + Game Strife + ConversationID 162, 158, 161 + +FLOORCLIP + +INVENTORY.INVBAR + Tag "Guard_Uniform" + Inventory.Icon "I_UNIF" + Inventory.PickupMessage "$TXT_GUARDUNIFORM" + Inventory.GiveQuest 15 + States + { + Spawn: + UNIF A -1 + Stop + } +} + + +// Officer's Uniform -------------------------------------------------------- + +ACTOR OfficersUniform : Inventory 52 +{ + Game Strife + ConversationID 163, 159, 162 + +FLOORCLIP + +INVENTORY.INVBAR + Tag "Officer's_Uniform" + Inventory.Icon "I_OFIC" + Inventory.PickupMessage "$TXT_OFFICERSUNIFORM" + States + { + Spawn: + OFIC A -1 + Stop + } +} + + +// InterrogatorReport ------------------------------------------------------- +// SCRIPT32 in strife0.wad has an Acolyte that drops this, but I couldn't +// find that Acolyte in the map. It seems to be totally unused in the +// final game. + +ACTOR InterrogatorReport : Inventory +{ + Game Strife + ConversationID 308, 289, 306 + +FLOORCLIP + Tag "report" + Inventory.PickupMessage "$TXT_REPORT" + States + { + Spawn: + TOKN A -1 + Stop + } +} + + +// Info --------------------------------------------------------------------- + +ACTOR Info : Inventory +{ + Game Strife + ConversationID 300, 282, 299 + +FLOORCLIP + +INVENTORY.INVBAR + Tag "info" + Inventory.Icon "I_TOKN" + Inventory.PickupMessage "$TXT_INFO" + States + { + Spawn: + TOKN A -1 + Stop + } +} + + +// Targeter ----------------------------------------------------------------- + +ACTOR Targeter : PowerupGiver 207 +{ + Game Strife + ConversationID 167, 169, 173 + +FLOORCLIP + +INVENTORY.INVBAR + -INVENTORY.FANCYPICKUPSOUND + Tag "Targeter" + Powerup.Type "Targeter" + Inventory.MaxAmount 5 + Inventory.Icon "I_TARG" + Inventory.PickupSound "misc/i_pkup" + Inventory.PickupMessage "$TXT_TARGETER" + States + { + Spawn: + TARG A -1 + Stop + } +} + diff --git a/wadsrc/decorate/strife/strifekeys.txt b/wadsrc/decorate/strife/strifekeys.txt new file mode 100644 index 000000000..805df8801 --- /dev/null +++ b/wadsrc/decorate/strife/strifekeys.txt @@ -0,0 +1,516 @@ +ACTOR StrifeKey : Key +{ + Radius 20 + Height 16 + +NOTDMATCH + +FLOORCLIP +} + +// Base Key ----------------------------------------------------------------- + +ACTOR BaseKey : StrifeKey 230 +{ + Game Strife + ConversationID 133, 129, 132 + Inventory.Icon "I_FUSL" + Tag "Base_Key" + Inventory.PickupMessage "$TXT_BASEKEY" + States + { + Spawn: + FUSL A -1 + Stop + } +} + + +// Govs Key ----------------------------------------------------------------- + +ACTOR GovsKey : StrifeKey +{ + Game Strife + ConversationID 134, 130, 133 + Inventory.Icon "I_REBL" + Tag "Govs_Key" // "Rebel_Key" in the Teaser + Inventory.PickupMessage "$TXT_GOVSKEY" + States + { + Spawn: + REBL A -1 + Stop + } +} + + +// Passcard ----------------------------------------------------------------- + +ACTOR Passcard : StrifeKey 185 +{ + Game Strife + ConversationID 135, 131, 134 + Inventory.Icon "I_TPAS" + Tag "Passcard" + Inventory.PickupMessage "$TXT_PASSCARD" + States + { + Spawn: + TPAS A -1 + Stop + } +} + + +// ID Badge ----------------------------------------------------------------- + +ACTOR IDBadge : StrifeKey 184 +{ + Game Strife + ConversationID 136, 132, 135 + Inventory.Icon "I_CRD1" + Tag "ID_Badge" + Inventory.PickupMessage "$TXT_IDBADGE" + States + { + Spawn: + CRD1 A -1 + Stop + } +} + + +// Prison Key --------------------------------------------------------------- + +ACTOR PrisonKey : StrifeKey +{ + Game Strife + ConversationID 137, 133, 136 + Inventory.Icon "I_PRIS" + Tag "Prison_Key" + Inventory.GiveQuest 11 + Inventory.PickupMessage "$TXT_PRISONKEY" + States + { + Spawn: + PRIS A -1 + Stop + } +} + + +// Severed Hand ------------------------------------------------------------- + +ACTOR SeveredHand : StrifeKey 91 +{ + Game Strife + ConversationID 138, 134, 137 + Inventory.Icon "I_HAND" + Tag "Severed_Hand" + Inventory.GiveQuest 12 + Inventory.PickupMessage "$TXT_SEVEREDHAND" + States + { + Spawn: + HAND A -1 + Stop + } +} + + +// Power1 Key --------------------------------------------------------------- + +ACTOR Power1Key : StrifeKey +{ + Game Strife + ConversationID 139, 135, 138 + Inventory.Icon "I_PWR1" + Tag "Power1_Key" + Inventory.PickupMessage "$TXT_POWER1KEY" + States + { + Spawn: + PWR1 A -1 + Stop + } +} + + +// Power2 Key --------------------------------------------------------------- + +ACTOR Power2Key : StrifeKey +{ + Game Strife + ConversationID 140, 136, 139 + Inventory.Icon "I_PWR2" + Tag "Power2_Key" + Inventory.PickupMessage "$TXT_POWER2KEY" + States + { + Spawn: + PWR2 A -1 + Stop + } +} + + +// Power3 Key --------------------------------------------------------------- + +ACTOR Power3Key : StrifeKey +{ + Game Strife + ConversationID 141, 137, 140 + Inventory.Icon "I_PWR3" + Tag "Power3_Key" + Inventory.PickupMessage "$TXT_POWER3KEY" + States + { + Spawn: + PWR3 A -1 + Stop + } +} + + +// Gold Key ----------------------------------------------------------------- + +ACTOR GoldKey : StrifeKey 40 +{ + Game Strife + ConversationID 142, 138, 141 + Inventory.Icon "I_KY1G" + Tag "Gold_Key" + Inventory.PickupMessage "$TXT_GOLDKEY" + States + { + Spawn: + KY1G A -1 + Stop + } +} + + +// ID Card ------------------------------------------------------------------ + +ACTOR IDCard : StrifeKey 13 +{ + Game Strife + ConversationID 143, 139, 142 + Inventory.Icon "I_CRD2" + Tag "ID_Card" + Inventory.PickupMessage "$TXT_IDCARD" + States + { + Spawn: + CRD2 A -1 + Stop + } +} + + +// Silver Key --------------------------------------------------------------- + +ACTOR SilverKey : StrifeKey 38 +{ + Game Strife + ConversationID 144, 140, 143 + Inventory.Icon "I_KY2S" + Tag "Silver_Key" + Inventory.PickupMessage "$TXT_SILVERKEY" + States + { + Spawn: + KY2S A -1 + Stop + } +} + + +// Oracle Key --------------------------------------------------------------- + +ACTOR OracleKey : StrifeKey 61 +{ + Game Strife + ConversationID 145, 141, 144 + Inventory.Icon "I_ORAC" + Tag "Oracle_Key" + Inventory.PickupMessage "$TXT_ORACLEKEY" + States + { + Spawn: + ORAC A -1 + Stop + } +} + + +// Military ID -------------------------------------------------------------- + +ACTOR MilitaryID : StrifeKey +{ + Game Strife + ConversationID 146, 142, 145 + Inventory.Icon "I_GYID" + Tag "Military ID" + Inventory.PickupMessage "$TXT_MILITARYID" + States + { + Spawn: + GYID A -1 + Stop + } +} + + +// Order Key ---------------------------------------------------------------- + +ACTOR OrderKey : StrifeKey 86 +{ + Game Strife + ConversationID 147, 143, 146 + Inventory.Icon "I_FUBR" + Tag "Order_Key" + Inventory.PickupMessage "$TXT_ORDERKEY" + States + { + Spawn: + FUBR A -1 + Stop + } +} + + +// Warehouse Key ------------------------------------------------------------ + +ACTOR WarehouseKey : StrifeKey 166 +{ + Game Strife + ConversationID 148, 144, 147 + Inventory.Icon "I_WARE" + Tag "Warehouse_Key" + Inventory.PickupMessage "$TXT_WAREHOUSEKEY" + States + { + Spawn: + WARE A -1 + Stop + } +} + + +// Brass Key ---------------------------------------------------------------- + +ACTOR BrassKey : StrifeKey 39 +{ + Game Strife + ConversationID 149, 145, 148 + Inventory.Icon "I_KY3B" + Tag "Brass_Key" + Inventory.PickupMessage "$TXT_BRASSKEY" + States + { + Spawn: + KY3B A -1 + Stop + } +} + + +// Red Crystal Key ---------------------------------------------------------- + +ACTOR RedCrystalKey : StrifeKey 192 +{ + Game Strife + ConversationID 150, 146, 149 + Inventory.Icon "I_RCRY" + Tag "Red_Crystal_Key" + Inventory.PickupMessage "$TXT_REDCRYSTAL" + States + { + Spawn: + RCRY A -1 Bright + Stop + } +} + + +// Blue Crystal Key --------------------------------------------------------- + +ACTOR BlueCrystalKey : StrifeKey 193 +{ + Game Strife + ConversationID 151, 147, 150 + Inventory.Icon "I_BCRY" + Tag "Blue_Crystal_Key" + Inventory.PickupMessage "$TXT_BLUECRYSTAL" + States + { + Spawn: + BCRY A -1 Bright + Stop + } +} + + +// Chapel Key --------------------------------------------------------------- + +ACTOR ChapelKey : StrifeKey 195 +{ + Game Strife + ConversationID 152, 148, 151 + Inventory.Icon "I_CHAP" + Tag "Chapel_Key" + Inventory.PickupMessage "$TXT_CHAPELKEY" + States + { + Spawn: + CHAP A -1 + Stop + } +} + + +// Catacomb Key ------------------------------------------------------------- + +ACTOR CatacombKey : StrifeKey +{ + Game Strife + ConversationID 153, 149, 152 + Inventory.Icon "I_TUNL" + Tag "Catacomb_Key" // "Tunnel_Key" in the Teaser + Inventory.GiveQuest 28 + Inventory.PickupMessage "$TXT_CATACOMBKEY" + States + { + Spawn: + TUNL A -1 + Stop + } +} + + +// Security Key ------------------------------------------------------------- + +ACTOR SecurityKey : StrifeKey +{ + Game Strife + ConversationID 154, 150, 153 + Inventory.Icon "I_SECK" + Tag "Security_Key" + Inventory.PickupMessage "$TXT_SECURITYKEY" + States + { + Spawn: + SECK A -1 + Stop + } +} + + +// Core Key ----------------------------------------------------------------- + +ACTOR CoreKey : StrifeKey 236 +{ + Game Strife + ConversationID 155, 151, 154 + Inventory.Icon "I_GOID" + Tag "Core_Key" // "New_Key1" in the Teaser + Inventory.PickupMessage "$TXT_COREKEY" + States + { + Spawn: + GOID A -1 + Stop + } +} + + +// Mauler Key --------------------------------------------------------------- + +ACTOR MaulerKey : StrifeKey 233 +{ + Game Strife + ConversationID 156, 152, 155 + Inventory.Icon "I_BLTK" + Tag "Mauler_Key" // "New_Key2" in the Teaser + Inventory.PickupMessage "$TXT_MAULERKEY" + States + { + Spawn: + BLTK A -1 + Stop + } +} + + +// Factory Key -------------------------------------------------------------- + +ACTOR FactoryKey : StrifeKey 234 +{ + Game Strife + ConversationID 157, 153, 156 + Inventory.Icon "I_PROC" + Tag "Factory_Key" // "New_Key3" in the Teaser + Inventory.PickupMessage "$TXT_FACTORYKEY" + States + { + Spawn: + PROC A -1 + Stop + } +} + + +// Mine Key ----------------------------------------------------------------- + +ACTOR MineKey : StrifeKey 235 +{ + Game Strife + ConversationID 158, 154, 157 + Inventory.Icon "I_MINE" // "New_Key4" in the Teaser + Tag "MINE_KEY" + Inventory.PickupMessage "$TXT_MINEKEY" + States + { + Spawn: + MINE A -1 + Stop + } +} + + +// New Key5 ----------------------------------------------------------------- + +ACTOR NewKey5 : StrifeKey +{ + Game Strife + ConversationID 159, 155, 158 + Inventory.Icon "I_BLTK" + Tag "New_Key5" + Inventory.PickupMessage "$TXT_NEWKEY5" + States + { + Spawn: + BLTK A -1 + Stop + } +} + + +// Oracle Pass -------------------------------------------------------------- + +ACTOR OraclePass : Inventory +{ + Game Strife + ConversationID 311, 292, 309 + +INVENTORY.INVBAR + Inventory.Icon "I_OTOK" + Inventory.GiveQuest 18 + Inventory.PickupMessage "$TXT_ORACLEPASS" + Tag "Oracle_Pass" + States + { + Spawn: + OTOK A -1 + Stop + } +} + diff --git a/wadsrc/decorate/strife/strifestuff.txt b/wadsrc/decorate/strife/strifestuff.txt new file mode 100644 index 000000000..0fb6d30f3 --- /dev/null +++ b/wadsrc/decorate/strife/strifestuff.txt @@ -0,0 +1,1659 @@ +// Tank 1 Huge ------------------------------------------------------------ + +ACTOR Tank1 209 +{ + Game Strife + Radius 16 + Height 192 + +SOLID + ConversationID 31, -1, -1 + States + { + Spawn: + TNK1 A 15 + TNK1 B 11 + TNK1 C 40 + Loop + } +} + +// Tank 2 Huge ------------------------------------------------------------ + +ACTOR Tank2 210 +{ + Game Strife + Radius 16 + Height 192 + +SOLID + ConversationID 32, -1, -1 + States + { + Spawn: + TNK2 A 15 + TNK2 B 11 + TNK2 C 40 + Loop + } +} + +// Tank 3 Huge ------------------------------------------------------------ + +ACTOR Tank3 211 +{ + Game Strife + Radius 16 + Height 192 + +SOLID + ConversationID 33, -1, -1 + States + { + Spawn: + TNK3 A 15 + TNK3 B 11 + TNK3 C 40 + Loop + } +} + +// Tank 4 ------------------------------------------------------------------- + +ACTOR Tank4 213 +{ + Game Strife + Radius 16 + Height 56 + +SOLID + ConversationID 34, -1, -1 + States + { + Spawn: + TNK4 A 15 + TNK4 B 11 + TNK4 C 40 + Loop + } +} + +// Tank 5 ------------------------------------------------------------------- + +ACTOR Tank5 214 +{ + Game Strife + Radius 16 + Height 56 + +SOLID + ConversationID 35, -1, -1 + States + { + Spawn: + TNK5 A 15 + TNK5 B 11 + TNK5 C 40 + Loop + } +} + +// Tank 6 ------------------------------------------------------------------- + +ACTOR Tank6 229 +{ + Game Strife + Radius 16 + Height 56 + +SOLID + ConversationID 36, -1, -1 + States + { + Spawn: + TNK6 A 15 + TNK6 B 11 + TNK6 C 40 + Loop + } +} + +// Water Bottle ------------------------------------------------------------- + +ACTOR WaterBottle 2014 +{ + Game Strife + ConversationID 131, -1, -1 + States + { + Spawn: + WATR A -1 + Stop + } +} + +// Mug ---------------------------------------------------------------------- + +ACTOR Mug 164 +{ + Game Strife + ConversationID 132, -1, -1 + States + { + Spawn: + MUGG A -1 + Stop + } +} + +// Wooden Barrel ------------------------------------------------------------ + +ACTOR WoodenBarrel 82 +{ + Game Strife + Health 10 + Radius 10 + Height 32 + +SOLID +SHOOTABLE +NOBLOOD + +INCOMBAT + ConversationID 203, -1, -1 + DeathSound "woodenbarrel/death" + States + { + Spawn: + BARW A -1 + Stop + Death: + BARW B 2 A_Scream + BARW C 2 + BARW D 2 A_NoBlocking + BARW EFG 2 + BARW H -1 + Stop + } +} + +// Strife's explosive barrel ------------------------------------------------ + +ACTOR ExplosiveBarrel2 : ExplosiveBarrel 94 +{ + Game Strife + Health 30 + Radius 10 + Height 32 + ConversationID 204, -1, -1 + //+SOLID +SHOOTABLE +NOBLOOD + +INCOMBAT + States + { + Spawn: + BART A -1 + Stop + Death: + BART B 2 Bright A_Scream + BART CD 2 Bright + BART E 2 Bright A_NoBlocking + BART F 0 Bright A_AlertMonsters + BART F 2 Bright A_Explode(64, 64) + BART GHIJ 2 Bright + BART K 3 Bright + BART L -1 + Stop + } +} + +// Light Silver, Fluorescent ---------------------------------------------- + +ACTOR LightSilverFluorescent 95 +{ + Game Strife + Radius 4 + Height 16 + +NOBLOCKMAP + +FIXMAPTHINGPOS + ConversationID 206, -1, -1 + States + { + Spawn: + LITS A -1 Bright + Stop + } +} + +// Light Brown, Fluorescent ----------------------------------------------- + +ACTOR LightBrownFluorescent 96 +{ + Game Strife + Radius 4 + Height 16 + +NOBLOCKMAP + +FIXMAPTHINGPOS + ConversationID 207, -1, -1 + States + { + Spawn: + LITB A -1 Bright + Stop + } +} + +// Light Gold, Fluorescent ------------------------------------------------ + +ACTOR LightGoldFluorescent 97 +{ + Game Strife + Radius 4 + Height 16 + +NOBLOCKMAP + +FIXMAPTHINGPOS + ConversationID 208, -1, -1 + States + { + Spawn: + LITG A -1 Bright + Stop + } +} + +// Light Globe -------------------------------------------------------------- + +ACTOR LightGlobe 2028 +{ + Game Strife + Radius 16 + Height 16 + +SOLID + ConversationID 209, -1, -1 + States + { + Spawn: + LITE A -1 Bright + Stop + } +} + +// Techno Pillar ------------------------------------------------------------ + +ACTOR PillarTechno 48 +{ + Game Strife + Radius 20 + Height 128 + +SOLID + ConversationID 210, -1, -1 + States + { + Spawn: + MONI A -1 + Stop + } +} + +// Aztec Pillar ------------------------------------------------------------- + +ACTOR PillarAztec 54 +{ + Game Strife + Radius 16 + Height 128 + +SOLID + ConversationID 211, -1, -1 + States + { + Spawn: + STEL A -1 + Stop + } +} + +// Damaged Aztec Pillar ----------------------------------------------------- + +ACTOR PillarAztecDamaged 55 +{ + Game Strife + Radius 16 + Height 80 + +SOLID + ConversationID 212, -1, -1 + States + { + Spawn: + STLA A -1 + Stop + } +} + +// Ruined Aztec Pillar ------------------------------------------------------ + +ACTOR PillarAztecRuined 56 +{ + Game Strife + Radius 16 + Height 40 + +SOLID + ConversationID 213, -1, -1 + States + { + Spawn: + STLE A -1 + Stop + } +} + +// Huge Tech Pillar --------------------------------------------------------- + +ACTOR PillarHugeTech 57 +{ + Game Strife + Radius 24 + Height 192 + +SOLID + ConversationID 214, -1, -1 + States + { + Spawn: + HUGE ABCD 4 + Loop + } +} + +// Alien Power Crystal in a Pillar ------------------------------------------ + +ACTOR PillarAlienPower 227 +{ + Game Strife + Radius 24 + Height 192 + +SOLID + ConversationID 215, -1, -1 + ActiveSound "ambient/alien2" + States + { + Spawn: + APOW A -1 A_LoopActiveSound + Stop + } +} + +// SStalactiteBig ----------------------------------------------------------- + +ACTOR SStalactiteBig 98 +{ + Game Strife + Radius 16 + Height 54 + +SOLID +SPAWNCEILING +NOGRAVITY + ConversationID 216, -1, -1 + States + { + Spawn: + STLG C -1 + Stop + } +} + +// SStalactiteSmall --------------------------------------------------------- + +ACTOR SStalactiteSmall 161 +{ + Game Strife + Radius 16 + Height 40 + +SOLID +SPAWNCEILING +NOGRAVITY + ConversationID 217, -1, -1 + States + { + Spawn: + STLG A -1 + Stop + } +} + +// SStalagmiteBig ----------------------------------------------------------- + +ACTOR SStalagmiteBig 160 +{ + Game Strife + Radius 16 + Height 40 + +SOLID + ConversationID 218, -1, -1 + States + { + Spawn: + STLG B -1 + Stop + } +} + +// Cave Pillar Top ---------------------------------------------------------- + +ACTOR CavePillarTop 159 +{ + Game Strife + Radius 16 + Height 128 + +SOLID +SPAWNCEILING +NOGRAVITY + ConversationID 219, -1, -1 + States + { + Spawn: + STLG D -1 + Stop + } +} + +// Cave Pillar Bottom ------------------------------------------------------- + +ACTOR CavePillarBottom 162 +{ + Game Strife + Radius 16 + Height 128 + +SOLID + ConversationID 220, -1, -1 + States + { + Spawn: + STLG E -1 + Stop + } +} + +// SStalagmiteSmall --------------------------------------------------------- + +ACTOR SStalagmiteSmall 163 +{ + Game Strife + Radius 16 + Height 25 + +SOLID + ConversationID 221, -1, -1 + States + { + Spawn: + STLG E -1 + Stop + } +} + +// Candle ------------------------------------------------------------------- + +ACTOR Candle 34 +{ + Game Strife + ConversationID 222, -1, -1 + States + { + Spawn: + KNDL A -1 Bright + Stop + } +} + +// StrifeCandelabra --------------------------------------------------------- + +ACTOR StrifeCandelabra 35 +{ + Game Strife + Radius 16 + Height 40 + +SOLID + ConversationID 223, -1, -1 + States + { + Spawn: + CLBR A -1 + Stop + } +} + +// Floor Water Drop --------------------------------------------------------- + +ACTOR WaterDropOnFloor 103 +{ + Game Strife + +NOBLOCKMAP + ConversationID 224, -1, -1 + ActiveSound "world/waterdrips" + States + { + Spawn: + DRIP A 6 A_FLoopActiveSound + DRIP BC 4 + DRIP D 4 A_FLoopActiveSound + DRIP EF 4 + DRIP G 4 A_FLoopActiveSound + DRIP H 4 + Loop + } +} + +// Waterfall Splash --------------------------------------------------------- + +ACTOR WaterfallSplash 104 +{ + Game Strife + +NOBLOCKMAP + ConversationID 225, -1, -1 + ActiveSound "world/waterfall" + States + { + Spawn: + SPLH ABCDEFG 4 + SPLH H 4 A_LoopActiveSound + Loop + } +} + +// Ceiling Water Drip ------------------------------------------------------- + +ACTOR WaterDrip 53 +{ + Game Strife + Height 1 + +NOBLOCKMAP +SPAWNCEILING +NOGRAVITY + ConversationID 226, -1, -1 + States + { + Spawn: + CDRP A 10 + CDRP BCD 8 + Loop + } +} + +// WaterFountain ------------------------------------------------------------ + +ACTOR WaterFountain 112 +{ + Game Strife + +NOBLOCKMAP + ConversationID 227, -1, -1 + ActiveSound "world/watersplash" + States + { + Spawn: + WTFT ABC 4 + WTFT D 4 A_LoopActiveSound + Stop + } +} + +// Hearts in Tank ----------------------------------------------------------- + +ACTOR HeartsInTank 113 +{ + Game Strife + Radius 16 + Height 56 + +SOLID + ConversationID 228, -1, -1 + States + { + Spawn: + HERT ABC 4 Bright + Loop + } +} + +// Teleport Swirl ----------------------------------------------------------- + +ACTOR TeleportSwirl 23 +{ + Game Strife + +NOBLOCKMAP + RenderStyle Add + Alpha 0.25 + ConversationID 229, -1, -1 + States + { + Spawn: + TELP ABCD 3 Bright + Stop + } +} + +// Dead Player -------------------------------------------------------------- +// Strife's disappeared. This one doesn't. + +ACTOR DeadStrifePlayer 15 +{ + Game Strife + ConversationID 231, -1, -1 + States + { + Spawn: + PLAY P 700 + RGIB H -1 + Stop + } +} + +// Dead Peasant ------------------------------------------------------------- +// Unlike Strife's, this one does not turn into gibs and disappear. + +ACTOR DeadPeasant 18 +{ + Game Strife + ConversationID 232, -1, -1 + States + { + Spawn: + PEAS N -1 + Stop + } +} + +// Dead Acolyte ------------------------------------------------------------- +// Unlike Strife's, this one does not turn into gibs and disappear. + +ACTOR DeadAcolyte 21 +{ + Game Strife + ConversationID 233, -1, -1 + States + { + Spawn: + AGRD N -1 + Stop + } +} + +// Dead Reaver -------------------------------------------------------------- + +ACTOR DeadReaver 20 +{ + Game Strife + ConversationID 234, -1, -1 + States + { + Spawn: + ROB1 R -1 + Stop + } +} + +// Dead Rebel --------------------------------------------------------------- + +ACTOR DeadRebel +{ + Game Strife + ConversationID 235, -1, -1 + States + { + Spawn: + HMN1 N -1 + Stop + } +} + +// Sacrificed Guy ----------------------------------------------------------- + +ACTOR SacrificedGuy 212 +{ + Game Strife + ConversationID 236, -1, -1 + States + { + Spawn: + SACR A -1 + Stop + } +} + +// Pile of Guts ------------------------------------------------------------- + +ACTOR PileOfGuts +{ + // Strife used a doomednum, which is the same as the Aztec Pillar. Since + // the pillar came first in the mobjinfo list, you could not spawn this + // in a map. Pity. + Game Strife + ConversationID 237, -1, -1 + States + { + Spawn: + DEAD A -1 + Stop + } +} + +// Burning Barrel ----------------------------------------------------------- + +ACTOR StrifeBurningBarrel 70 +{ + Game Strife + Radius 16 + Height 48 + +SOLID + ConversationID 238, -1, -1 + States + { + Spawn: + BBAR ABCD 4 Bright + Loop + } +} + +// Burning Bowl ----------------------------------------------------------- + +ACTOR BurningBowl 105 +{ + Game Strife + Radius 16 + Height 16 + +SOLID + ConversationID 239, -1, -1 + ActiveSound "world/smallfire" + States + { + Spawn: + BOWL ABCD 4 Bright + Loop + } +} + +// Burning Brazier ----------------------------------------------------------- + +ACTOR BurningBrazier 106 +{ + Game Strife + Radius 10 + Height 32 + +SOLID + ConversationID 240, -1, -1 + ActiveSound "world/smallfire" + States + { + Spawn: + BRAZ ABCD 4 Bright + Stop + } +} + +// Small Torch Lit -------------------------------------------------------- + +ACTOR SmallTorchLit 107 +{ + Game Strife + Radius 0.00007 + Height 16 + +NOBLOCKMAP + +FIXMAPTHINGPOS + ConversationID 241, -1, -1 + + // It doesn't have any action functions, so how does it use this sound? + ActiveSound "world/smallfire" + States + { + Spawn: + TRHL ABCD 4 Bright + Loop + } +} + +// Small Torch Unlit -------------------------------------------------------- + +ACTOR SmallTorchUnlit 108 +{ + Game Strife + Radius 0.00007 + Height 16 + +NOBLOCKMAP + +FIXMAPTHINGPOS + ConversationID 242, -1, -1 + States + { + Spawn: + TRHO A -1 + Stop + } +} + +// Ceiling Chain ------------------------------------------------------------ + +ACTOR CeilingChain 109 +{ + Game Strife + Radius 20 + Height 93 + +NOBLOCKMAP +SPAWNCEILING +NOGRAVITY + ConversationID 243, -1, -1 + States + { + Spawn: + CHAN A -1 + Stop + } +} + +// Cage Light --------------------------------------------------------------- + +ACTOR CageLight 28 +{ + // No, it's not bright even though it's a light. + Game Strife + Height 3 + +NOBLOCKMAP +SPAWNCEILING +NOGRAVITY + ConversationID 244, -1, -1 + States + { + Spawn: + CAGE A -1 + Stop + } +} + +// Statue ------------------------------------------------------------------- + +ACTOR Statue 110 +{ + Game Strife + Radius 20 + Height 64 + +SOLID + ConversationID 245, -1, -1 + States + { + Spawn: + STAT A -1 + Stop + } +} + +// Ruined Statue ------------------------------------------------------------ + +ACTOR StatueRuined 44 +{ + Game Strife + Radius 20 + Height 56 + +SOLID + ConversationID 246, -1, -1 + States + { + Spawn: + DSTA A -1 + Stop + } +} + +// Medium Torch ------------------------------------------------------------- + +ACTOR MediumTorch 111 +{ + Game Strife + Radius 4 + Height 72 + +SOLID + ConversationID 247, -1, -1 + States + { + Spawn: + LTRH ABCD 4 + Loop + } +} + +// Outside Lamp ------------------------------------------------------------- + +ACTOR OutsideLamp 43 +{ + // No, it's not bright. + Game Strife + Radius 3 + Height 80 + +SOLID + ConversationID 248, -1, -1 + States + { + Spawn: + LAMP A -1 + Stop + } +} + +// Pole Lantern ------------------------------------------------------------- + +ACTOR PoleLantern 46 +{ + // No, it's not bright. + Game Strife + Radius 3 + Height 80 + +SOLID + ConversationID 249, -1, -1 + States + { + Spawn: + LANT A -1 + Stop + } +} + +// Rock 1 ------------------------------------------------------------------- + +ACTOR SRock1 99 +{ + Game Strife + +NOBLOCKMAP + ConversationID 250, -1, -1 + States + { + Spawn: + ROK1 A -1 + Stop + } +} + +// Rock 2 ------------------------------------------------------------------- + +ACTOR SRock2 100 +{ + Game Strife + +NOBLOCKMAP + ConversationID 251, -1, -1 + States + { + Spawn: + ROK2 A -1 + Stop + } +} + +// Rock 3 ------------------------------------------------------------------- + +ACTOR SRock3 101 +{ + Game Strife + +NOBLOCKMAP + ConversationID 252, -1, -1 + States + { + Spawn: + ROK3 A -1 + Stop + } +} + +// Rock 4 ------------------------------------------------------------------- + +ACTOR SRock4 102 +{ + Game Strife + +NOBLOCKMAP + ConversationID 253, -1, -1 + States + { + Spawn: + ROK4 A -1 + Stop + } +} + +// Stick in Water ----------------------------------------------------------- + +ACTOR StickInWater 215 +{ + Game Strife + +NOBLOCKMAP + +FLOORCLIP + ConversationID 254, -1, -1 + ActiveSound "world/river" + States + { + Spawn: + LOGW ABCD 5 A_LoopActiveSound + Loop + } +} + +// Rubble 1 ----------------------------------------------------------------- + +ACTOR Rubble1 29 +{ + Game Strife + +NOBLOCKMAP +NOCLIP + ConversationID 255, -1, -1 + States + { + Spawn: + RUB1 A -1 + Stop + } +} + +// Rubble 2 ----------------------------------------------------------------- + +ACTOR Rubble2 30 +{ + Game Strife + +NOBLOCKMAP +NOCLIP + ConversationID 256, -1, -1 + States + { + Spawn: + RUB2 A -1 + Stop + } +} + +// Rubble 3 ----------------------------------------------------------------- + +ACTOR Rubble3 31 +{ + Game Strife + +NOBLOCKMAP +NOCLIP + ConversationID 257, -1, -1 + States + { + Spawn: + RUB3 A -1 + Stop + } +} + +// Rubble 4 ----------------------------------------------------------------- + +ACTOR Rubble4 32 +{ + Game Strife + +NOBLOCKMAP +NOCLIP + ConversationID 258, -1, -1 + States + { + Spawn: + RUB4 A -1 + Stop + } +} + +// Rubble 5 ----------------------------------------------------------------- + +ACTOR Rubble5 36 +{ + Game Strife + +NOBLOCKMAP +NOCLIP + ConversationID 259, -1, -1 + States + { + Spawn: + RUB5 A -1 + Stop + } +} + +// Rubble 6 ----------------------------------------------------------------- + +ACTOR Rubble6 37 +{ + Game Strife + +NOBLOCKMAP +NOCLIP + ConversationID 260, -1, -1 + States + { + Spawn: + RUB6 A -1 + Stop + } +} + +// Rubble 7 ----------------------------------------------------------------- + +ACTOR Rubble7 41 +{ + Game Strife + +NOBLOCKMAP +NOCLIP + ConversationID 261, -1, -1 + States + { + Spawn: + RUB7 A -1 + Stop + } +} + +// Rubble 8 ----------------------------------------------------------------- + +ACTOR Rubble8 42 +{ + Game Strife + +NOBLOCKMAP +NOCLIP + ConversationID 262, -1, -1 + States + { + Spawn: + RUB8 A -1 + Stop + } +} + +// Surgery Crab ------------------------------------------------------------- + +ACTOR SurgeryCrab 117 +{ + Game Strife + +SOLID +SPAWNCEILING +NOGRAVITY + Radius 20 + Height 16 + ConversationID 263, -1, -1 + States + { + Spawn: + CRAB A -1 + Stop + } +} + +// Large Torch -------------------------------------------------------------- + +ACTOR LargeTorch 47 +{ + Game Strife + Radius 10 + Height 72 + +SOLID + ConversationID 264, -1, -1 + ActiveSound "world/smallfire" + States + { + Spawn: + LMPC ABCD 4 Bright + Loop + } +} + +// Huge Torch -------------------------------------------------------------- + +ACTOR HugeTorch 50 +{ + Game Strife + Radius 10 + Height 80 + +SOLID + ConversationID 265, -1, -1 + ActiveSound "world/smallfire" + States + { + Spawn: + LOGS ABCD 4 + Loop + } +} + +// Palm Tree ---------------------------------------------------------------- + +ACTOR PalmTree 51 +{ + Game Strife + Radius 15 + Height 109 + +SOLID + ConversationID 266, -1, -1 + States + { + Spawn: + TREE A -1 + Stop + } +} + +// Big Tree ---------------------------------------------------------------- + +ACTOR BigTree2 202 +{ + Game Strife + Radius 15 + Height 109 + +SOLID + ConversationID 267, -1, -1 + States + { + Spawn: + TREE B -1 + Stop + } +} + +// Potted Tree ---------------------------------------------------------------- + +ACTOR PottedTree 203 +{ + Game Strife + Radius 15 + Height 64 + +SOLID + ConversationID 268, -1, -1 + States + { + Spawn: + TREE C -1 + Stop + } +} + +// Tree Stub ---------------------------------------------------------------- + +ACTOR TreeStub 33 +{ + Game Strife + Radius 15 + Height 80 + +SOLID + ConversationID 269, -1, -1 + States + { + Spawn: + TRET A -1 + Stop + } +} + +// Short Bush --------------------------------------------------------------- + +ACTOR ShortBush 60 +{ + Game Strife + Radius 15 + Height 40 + +SOLID + ConversationID 270, -1, -1 + States + { + Spawn: + BUSH A -1 + Stop + } +} + +// Tall Bush --------------------------------------------------------------- + +ACTOR TallBush 62 +{ + Game Strife + Radius 20 + Height 64 + +SOLID + ConversationID 271, -1, -1 + States + { + Spawn: + SHRB A -1 + Stop + } +} + +// Chimney Stack ------------------------------------------------------------ + +ACTOR ChimneyStack 63 +{ + Game Strife + Radius 20 + Height 64 // This height does not fit the sprite + +SOLID + ConversationID 272, -1, -1 + States + { + Spawn: + STAK A -1 + Stop + } +} + +// Barricade Column --------------------------------------------------------- + +ACTOR BarricadeColumn 69 +{ + Game Strife + Radius 16 + Height 128 + +SOLID + ConversationID 273, -1, -1 + States + { + Spawn: + BARC A -1 + Stop + } +} + +// Pot ---------------------------------------------------------------------- + +ACTOR Pot 165 +{ + Game Strife + Radius 12 + Height 24 + +SOLID + ConversationID 274, -1, -1 + States + { + Spawn: + VAZE A -1 + Stop + } +} + +// Pitcher ------------------------------------------------------------------ + +ACTOR Pitcher 188 +{ + Game Strife + Radius 12 + Height 32 + +SOLID + ConversationID 275, -1, -1 + States + { + Spawn: + VAZE B -1 + Stop + } +} + +// Stool -------------------------------------------------------------------- + +ACTOR Stool 189 +{ + Game Strife + Radius 6 + Height 24 + +SOLID + ConversationID 276, -1, -1 + States + { + Spawn: + STOL A -1 + Stop + } +} + +// Metal Pot ---------------------------------------------------------------- + +ACTOR MetalPot 190 +{ + Game Strife + +NOBLOCKMAP + ConversationID 277, -1, -1 + States + { + Spawn: + MPOT A -1 + Stop + } +} + +// Tub ---------------------------------------------------------------------- + +ACTOR Tub 191 +{ + Game Strife + +NOBLOCKMAP + ConversationID 278, -1, -1 + States + { + Spawn: + TUB1 A -1 + Stop + } +} + +// Anvil -------------------------------------------------------------------- + +ACTOR Anvil 194 +{ + Game Strife + Radius 16 + Height 32 + +SOLID + ConversationID 279, -1, -1 + States + { + Spawn: + ANVL A -1 + Stop + } +} + +// Silver Tech Lamp ---------------------------------------------------------- + +ACTOR TechLampSilver 196 +{ + Game Strife + Radius 11 + Height 64 + +SOLID + ConversationID 280, -1, -1 + States + { + Spawn: + TECH A -1 + Stop + } +} + +// Brass Tech Lamp ---------------------------------------------------------- + +ACTOR TechLampBrass 197 +{ + Game Strife + Radius 8 + Height 64 + +SOLID + ConversationID 281, -1, -1 + States + { + Spawn: + TECH B -1 + Stop + } +} + +// Tray -------------------------------------------------------------------- + +ACTOR Tray 68 +{ + Game Strife + Radius 24 + Height 40 + +SOLID + ConversationID 282, -1, -1 + States + { + Spawn: + TRAY A -1 + Stop + } +} + +// AmmoFiller --------------------------------------------------------------- + +ACTOR AmmoFiller 228 +{ + Game Strife + Radius 12 + Height 24 + +SOLID + ConversationID 283, -1, -1 + States + { + Spawn: + AFED A -1 + Stop + } +} + +// Sigil Banner ------------------------------------------------------------- + +ACTOR SigilBanner 216 +{ + Game Strife + Radius 24 + Height 96 + +NOBLOCKMAP // I take it this was once solid, yes? + ConversationID 284, -1, -1 + States + { + Spawn: + SBAN A -1 + Stop + } +} + +// RebelBoots --------------------------------------------------------------- + +ACTOR RebelBoots 217 +{ + Game Strife + +NOBLOCKMAP + ConversationID 285, -1, -1 + States + { + Spawn: + BOTR A -1 + Stop + } +} + +// RebelHelmet -------------------------------------------------------------- + +ACTOR RebelHelmet 218 +{ + Game Strife + +NOBLOCKMAP + ConversationID 286, -1, -1 + States + { + Spawn: + HATR A -1 + Stop + } +} + +// RebelShirt --------------------------------------------------------------- + +ACTOR RebelShirt 219 +{ + Game Strife + +NOBLOCKMAP + ConversationID 287, -1, -1 + States + { + Spawn: + TOPR A -1 + Stop + } +} + +// Alien Bubble Column ------------------------------------------------------ + +ACTOR AlienBubbleColumn 221 +{ + Game Strife + Radius 16 + Height 128 + +SOLID + ConversationID 290, -1, -1 + ActiveSound "ambient/alien5" + States + { + Spawn: + BUBB A 4 A_LoopActiveSound + Loop + } +} + +// Alien Floor Bubble ------------------------------------------------------- + +ACTOR AlienFloorBubble 222 +{ + Game Strife + Radius 16 + Height 72 + +SOLID + ConversationID 291, -1, -1 + ActiveSound "ambient/alien6" + States + { + Spawn: + BUBF A 4 A_LoopActiveSound + Loop + } +} + +// Alien Ceiling Bubble ----------------------------------------------------- + +ACTOR AlienCeilingBubble 223 +{ + Game Strife + Radius 16 + Height 72 + +SOLID +SPAWNCEILING +NOGRAVITY + ConversationID 292, -1, -1 + ActiveSound "ambient/alien4" + States + { + Spawn: + BUBC A 4 A_LoopActiveSound + Loop + } +} + +// Alien Asp Climber -------------------------------------------------------- + +ACTOR AlienAspClimber 224 +{ + Game Strife + Radius 16 + Height 128 + +SOLID + ConversationID 293, -1, -1 + ActiveSound "ambient/alien3" + States + { + Spawn: + ASPR A 4 A_LoopActiveSound + Loop + } +} + +// Alien Spider Light ------------------------------------------------------- + +ACTOR AlienSpiderLight 225 +{ + Game Strife + Radius 32 + Height 56 + +SOLID + ConversationID 294, -1, -1 + ActiveSound "ambient/alien1" + States + { + Spawn: + SPDL ABC 5 A_LoopActiveSound + Loop + } +} + +// Target Practice ----------------------------------------------------------- + +ACTOR TargetPractice 208 +{ + Game Strife + Health 99999999 + PainChance 255 + Radius 10 + Height 72 + Mass 9999999 + +SOLID +SHOOTABLE +NOBLOOD + +INCOMBAT +NODAMAGE + ConversationID 205, -1, -1 + PainSound "misc/metalhit" + States + { + Spawn: + HOGN A 2 A_CheckTerrain + Loop + Pain: + HOGN B 1 A_CheckTerrain + HOGN C 1 A_Pain + Goto Spawn + } +} + diff --git a/wadsrc/decorate/strife/zombie.txt b/wadsrc/decorate/strife/zombie.txt new file mode 100644 index 000000000..fae934e9b --- /dev/null +++ b/wadsrc/decorate/strife/zombie.txt @@ -0,0 +1,61 @@ + +// Zombie ------------------------------------------------------------------- + +ACTOR Zombie : StrifeHumanoid 169 +{ + Game Strife + Health 31 + Radius 20 + Height 56 + PainChance 0 + +SOLID + +SHOOTABLE + +FLOORCLIP + +CANPASS + +CANPUSHWALLS + +ACTIVATEMCROSS + MinMissileChance 150 + MaxStepHeight 16 + MaxDropOffHeight 32 + Translation 0 + ConversationID 28, -1, -1 + DeathSound "zombie/death" + States + { + Spawn: + PEAS A 5 A_CheckTerrain + Loop + Pain: + AGRD A 5 A_CheckTerrain + Loop + Death: + GIBS M 5 A_TossGib + GIBS N 5 A_XScream + GIBS O 5 A_NoBlocking + GIBS PQRST 4 A_TossGib + GIBS U 5 + GIBS V 1400 + Stop + } +} + + +// Zombie Spawner ----------------------------------------------------------- + +ACTOR ZombieSpawner 170 +{ + Game Strife + Health 20 + +SHOOTABLE + +NOSECTOR + RenderStyle None + ConversationID 30, -1, -1 + ActiveSound "zombie/spawner" // Does Strife use this somewhere else? + States + { + Spawn: + TNT1 A 175 A_SpawnItem("Zombie", 0.1, 0) + Loop + } +} + diff --git a/wadsrc/languages/english-us.txt b/wadsrc/languages/english-us.txt index 7bc1d68fa..48215ee41 100644 --- a/wadsrc/languages/english-us.txt +++ b/wadsrc/languages/english-us.txt @@ -986,6 +986,66 @@ TXT_NEED_BRASSKEY = "You need the Brass Key"; TXT_NEED_REDCRYSTAL = "You need the Red Crystal"; TXT_NEED_BLUECRYSTAL = "You need the Blue Crystal"; +// Strife Quest messages + +TXT_QUEST_14 = "You've Blown Up the Crystal"; +TXT_QUEST_16 = "You've Blown Up the Gates"; +TXT_QUEST_27 = "You've Blown Up the Computer"; + +TXT_KILLED_BISHOP = "You Killed The Bishop!"; +TXT_KILLED_ORACLE = "You've Killed The Oracle!"; +TXT_KILLED_MACIL = "You Killed Macil!"; +TXT_KILLED_LOREMASTER = "You've Killed the Loremaster!"; + +// Strife pickup messages + +TXT_METALARMOR = "You picked up the Metal Armor."; +TXT_LEATHERARMOR = "You picked up the Leather Armor."; +TXT_MEDPATCH = "You picked up the Med patch."; +TXT_MEDICALKIT = "You picked up the Medical kit."; +TXT_SURGERYKIT = "You picked up the Surgery Kit."; +TXT_STRIFEMAP = "You picked up the map"; +TXT_BELDINSRING = "You picked up the ring."; +TXT_OFFERINGCHALICE = "You picked up the Offering Chalice."; +TXT_EAR = "You picked up the ear."; +TXT_BROKENCOUPLING = "You picked up the broken power coupling."; +TXT_SHADOWARMOR = "You picked up the Shadow armor."; +TXT_ENVSUIT = "You picked up the Environmental Suit."; +TXT_GUARDUNIFORM = "You picked up the Guard Uniform."; +TXT_OFFICERSUNIFORM = "You picked up the Officer's Uniform."; +TXT_REPORT = "You picked up the report."; +TXT_INFO = "You picked up the info."; +TXT_TARGETER = "You picked up the Targeter."; + +TXT_BASEKEY = "You picked up the Base Key."; +TXT_GOVSKEY = "You picked up the Govs Key."; +TXT_PASSCARD = "You picked up the Passcard."; +TXT_IDBADGE = "You picked up the ID Badge."; +TXT_PRISONKEY = "You picked up the Prison Key."; +TXT_SEVEREDHAND = "You picked up the Severed Hand."; +TXT_POWER1KEY = "You picked up the Power1 Key."; +TXT_POWER2KEY = "You picked up the Power2 Key."; +TXT_POWER3KEY = "You picked up the Power3 Key."; +TXT_GOLDKEY = "You picked up the Gold Key."; +TXT_IDCARD = "You picked up the ID Card."; +TXT_SILVERKEY = "You picked up the Silver Key."; +TXT_ORACLEKEY = "You picked up the Oracle Key."; +TXT_MILITARYID = "You picked up the Military ID."; +TXT_ORDERKEY = "You picked up the Order Key."; +TXT_WAREHOUSEKEY = "You picked up the Warehouse Key."; +TXT_BRASSKEY = "You picked up the Brass Key."; +TXT_REDCRYSTAL = "You picked up the Red Crystal Key."; +TXT_BLUECRYSTAL = "You picked up the Blue Crystal Key."; +TXT_CHAPELKEY = "You picked up the Chapel Key."; +TXT_CATACOMBKEY = "You picked up the Catacomb Key."; +TXT_SECURITYKEY = "You picked up the Security Key."; +TXT_COREKEY = "You picked up the Core Key."; +TXT_MAULERKEY = "You picked up the Mauler Key."; +TXT_FACTORYKEY = "You picked up the Factory Key."; +TXT_MINEKEY = "You picked up the Mine Key."; +TXT_NEWKEY5 = "You picked up the New Key5."; +TXT_ORACLEPASS = "You picked up the Oracle Pass."; + // Bloodbath announcer BBA_BONED = "%k boned %o like a fish"; diff --git a/wadsrc/languages/italian.txt b/wadsrc/languages/italian.txt index 978b41dc9..4bd8236ec 100644 --- a/wadsrc/languages/italian.txt +++ b/wadsrc/languages/italian.txt @@ -548,6 +548,16 @@ PD_ANY = "Una chiave qualunque aprira' questa porta"; PD_ALL3 = "Ti servono tutte e tre le chiavi per aprire questa porta"; PD_ALL6 = "Ti servono tutte e sei le chiavi per aprire questa porta"; +PD_ALL3O = "Ti servono tutte e tre le chiavi per attivare questo oggetto "; +PD_ALL6O = "Ti servono tutte e tre le chiavi per attivare questo oggetto "; +PD_BLUECO = "ti serve una tessera blu per attivare questo oggetto "; +PD_REDCO = "ti serve una tessera rossa per attivare questo oggetto "; +PD_YELLOWCO = "ti serve una tessera gialla per attivare questo oggetto "; +PD_BLUESO = "ti serve una chiave-teschio blu per attivare questo oggetto "; +PD_REDSO = "ti serve una chiave-teschio rossa per attivare questo oggetto "; +PD_YELLOWSO = "ti serve una chiave-teschio gialla per attivare questo oggetto "; + + // Gameflow messages TXT_FRAGLIMIT = "Fraglimit raggiunto."; TXT_TIMELIMIT = "Timelimit raggiunto."; diff --git a/wadsrc/wadsrc.vcproj b/wadsrc/wadsrc.vcproj index 781e005e3..9db22addb 100644 --- a/wadsrc/wadsrc.vcproj +++ b/wadsrc/wadsrc.vcproj @@ -301,6 +301,39 @@ + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - @@ -4066,9 +4045,6 @@ - - @@ -4078,9 +4054,6 @@ - - @@ -4105,9 +4078,6 @@ - -