Back to the Vavoom Forum Archives


Forum

Creating new monsters and their features

Fri, 18 Nov 2005 10:41:54

Crimson Wizard

I have created a new monster in my Hexen mod by copying Baron of Hell from Doom, and modified it so it has an ability to summon Fire Gargoyles to aid him. But what worries me much - how can I make sure that they won't be spawned into occupied space (wall or smthing)? I use random coordinates generation (-127 to +128 from Baron's body radius).
Fri, 18 Nov 2005 14:16:03

Firebrand

You can check how it works by looking into the Pain Elemental code in Doom2, it might help, here are the lines of code that have what you are asking for:
	prestep = 4.0 + 3.0 * (Radius + newSkull.Radius) / 2.0;

	// Check for movements.
	if (!newSkull.TryMove(newSkull.Origin + vector(
		prestep * cos(angle), prestep * sin(angle), 8.0)))
	{
		// kill it immediately
		newSkull.Damage(self, self, 10000);
		return;
	}
So, basically you check if the monster can move, if the monster it's unable to move you simply kill it or remove it from the map, I don't think there's any other way to do this. EDIT: Forgot to put the prestep variable.
Sat, 19 Nov 2005 14:39:43

Crimson Wizard

Hmm.. I think I better check Maulotaur artifact spawn function.
Sun, 25 Jun 2006 10:03:33

Alex-bomber_Man

Where from did you got that script? I didnt found it in the wad file. Can you sent me the script of chainguy, or tell me where can i get it?
Sun, 25 Jun 2006 11:12:34

Janis Legzdinsh

Go to downloads page and download progs source package.
Mon, 26 Jun 2006 16:50:48

Alex-bomber_Man

May you tell me more detaily, which of the files - "Vavoom progs 120" or "Vavoom 120 source" - i have both of them. And tell me please the directory of the file, that i need. Oh, will it work if i write the name of the changed file in Vavoom launcher, in the "files" string ?
Mon, 26 Jun 2006 17:19:22

Janis Legzdinsh

May you tell me more detaily, which of the files - "Vavoom progs 120" or "Vavoom 120 source" - i have both of them.
Progs package has Window binary of the compiler so it will be more usefull.
And tell me please the directory of the file, that i need.
progs/doom/game2/ChaingunGuy.vc
Oh, will it work if i write the name of the changed file in Vavoom launcher, in the "files" string ?
No, you must compile it.
Mon, 26 Jun 2006 20:44:40

Firebrand

This part of the Vavoom's wiki could come handy for you.
Sun, 16 May 2010 17:51:37

Janis Legzdinsh

You must move everything from progs/common/ to progs/.
Wed, 12 May 2010 08:07:07

b0rsuk

[quote="Janis Legzdinsh":2sp9pt10]
May you tell me more detaily, which of the files - "Vavoom progs 120" or "Vavoom 120 source" - i have both of them.
Progs package has Window binary of the compiler so it will be more usefull.
And tell me please the directory of the file, that i need.
progs/doom/game2/ChaingunGuy.vc I'm confused. I'm interesting in modding monsters for Hexen, but I can't find any code describing monsters. In vavoom-prog-1.31.zip there's no progs/doom/game2/ChainGuy.vc file. I can't find such a file anywhere. The package has directories like this: progs/doom/cgame progs/doom/game progs/doom2 (this dir contains only two files, cgame.vc, and CMakeLists.txt) I even looked inside most of the files and found nothing.
Wed, 12 May 2010 10:07:21

Crimson Wizard

b0rsuk, you do realize that this is a 4 years old thread? <!-- s;) --><img src="{SMILIES_PATH}/icon_wink.gif" alt=";)" title="Wink" /><!-- s;) --> Regarding your question, since 2006 many things were changed in Vavoom progs. Many actual classes were moved from VavoomC to DECORATE. Check "actors" subfolder in basev/common/basepak.pk3
Wed, 12 May 2010 17:21:27

b0rsuk

Thank you. You surely realize I don't have many better options than looking in these forums ? Wiki is almost empty, documentation is largely in a language I can't even identify (and there's not much of it). Wikipedia entry on Vavoom is very short, barely one paragraph and no mention of VavoomC or modding. <!-- m --><a class="postlink" href="http://en.wikipedia.org/wiki/Doom_source_port#Vavoom">http://en.wikipedia.org/wiki/Doom_source_port#Vavoom</a><!-- m --> "Downloads" section implies that "progs" package is enough for modding (technically it is, but it's insulting to tell someone they can start modding/programming without reading examples). Vavoom in general (the application, the website, wiki, forum activity) seems to be capable, but somewhat lacking in polish and covered in cobwebs. Should I post new topics instead of using old ones ? I think keeping a smaller number of useful topics is better.
Thu, 13 May 2010 10:01:20

b0rsuk

Ok, I'm stumped again. I'm trying to figure out what tells Afrit (a.k.a. Firedemon) to shoot three missiles. From vavoom-1.31\basev\common\actors\hexen\firedemon.txt : [spoiler:kpno89pf]
Missile:
		FDMN K 3 Bright A_FaceTarget
		FDMN KKK 5 Bright A_FiredAttack
		Goto See+9
(...)
actor FireDemonMissile
{
	Radius 10
	Height 6
	Mass 15
	Speed 10
	Damage 1
	DamageType "Fire"
	RenderStyle Add
	Projectile
	DeathSound "FireDemonMissileHit"
	states
	{
	Spawn:
		FDMB A 5 Bright
		Loop
	Death:
		FDMB BCDE 5 Bright
		Stop
	}
}
(...)
[/spoiler:kpno89pf] From \vavoom-1.31\progs\common\linespec : [spoiler:kpno89pf]

//============================================================================
//
//  A_FiredAttack
//
//============================================================================

final void A_FiredAttack()
{
	EntityEx mo;

	mo = SpawnMissile(Target, FireDemonMissile);
	if (mo)
	{
		PlaySound('FireDemonAttack', CHAN_WEAPON);
	}
}
[/spoiler:kpno89pf] Basically I'm trying to modify the number of missiles an afrit shoots. I have the same problem with Dark Bishop - I can't figure out why it shoots out 12 missiles (according to DooM wiki). Figuring out doom chaingun (2) and Korax (6) is much easier.
Thu, 13 May 2010 13:34:27

Crimson Wizard

[quote="b0rsuk":1qdpappf] Basically I'm trying to modify the number of missiles an afrit shoots. Since in this particular case this could be done modifying DECORATE, you can also refer to ZDoom Wiki, which, except for certain moments, can be relied upon when working with Vavoom. Original Afrit fire:
Missile:
      FDMN K 3 Bright A_FaceTarget
      FDMN KKK 5 Bright A_FiredAttack
      Goto See+9
In the line "FDMN KKK 5 Bright A_FiredAttack" first 4 letters are sprite name, second part is frames, third is frame delay. Three K-s means 3 repeated frames FDMNK; each of these frames trigger action A_FiredAttack, thus 3 shots are produced. If you want it shoot 5 missiles, you can make so:
Missile:
      FDMN K 3 Bright A_FaceTarget
      FDMN KKKKK 5 Bright A_FiredAttack
      Goto See+9
Sun, 16 May 2010 16:16:12

Firebrand

For the progs source to work correctly, you need to put it inside a basepak.pk3 file (which is only a ZIP file renamed <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->), you will only need to insert the progs directory you have there (with every subdirectories and files) and the base.txt file. Then run the game again as you are doing, your changes will be seen when playing <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->, hope this helps you out.
Sun, 16 May 2010 07:08:11

b0rsuk

Thank you, I've figured out a couple of things, and Zdoom wiki is useful. I suspected that (KKK) may be what causes three fireballs to be shot, but had no way to be sure. That's a quite obfuscated loop syntax for sure. I was modding my cute afrit here and there, and it actually works ingame. Then it occured to me it's not going to end well if I just mod it directly in basepak.pk3 . I would like a proper gameplay mod, properly separated from base game. And I'm unable to progress: 1) There are very few or no gameplay mods which use the recommended "separate directory" approach. In most cases, like Wicked Doom, download links are long gone. 2) The wiki doesn't seem to be up to date. <!-- m --><a class="postlink" href="http://www.vavoom-engine.com/wiki/index.php?title=Editing#File_system">http://www.vavoom-engine.com/wiki/index ... ile_system</a><!-- m --> I think I performed point 5 right: I copied progs from separate archive (prog sources 1.31, game logic). I'm trying to create a Hexen mod. My directory structure is, so far, as follows. In vavoom's root directory: [spoiler:327y0keu]
myhexgame/
|-- base.txt
|-- config.cfg
|-- progs
|   |-- CMakeLists.txt
|   |-- cgame
|   |   |-- ClientGame.vc
|   |   |-- IntermissionScreen.vc
|   |   |-- MenuScreenControls2.vc
|   |   |-- MenuScreenGameplayOptions.vc
|   |   |-- MenuScreenHelp.vc
|   |   |-- MenuScreenMain.vc
|   |   |-- MenuScreenMultiplayer.vc
|   |   |-- MenuScreenNewNetGame.vc
|   |   |-- MenuScreenOptions.vc
|   |   |-- MenuScreenPlayerSetup.vc
|   |   |-- StatusBarScreen.vc
|   |   |-- TitleScreen.vc
|   |   `-- classes.vc
|   |-- common
|   |   |-- CMakeLists.txt
|   |   |-- engine
|   |   |   |-- ActorDisplayWindow.vc
|   |   |   |-- BasePlayer.vc
|   |   |   |-- ClientGameBase.vc
|   |   |   |-- Entity.vc
|   |   |   |-- GameInfo.vc
|   |   |   |-- GameObject.vc
|   |   |   |-- Level.vc
|   |   |   |-- LevelInfo.vc
|   |   |   |-- Object.vc
|   |   |   |-- PlayerReplicationInfo.vc
|   |   |   |-- RootWidget.vc
|   |   |   |-- ScriptsParser.vc
|   |   |   |-- Thinker.vc
|   |   |   |-- Widget.vc
|   |   |   |-- WorldInfo.vc
|   |   |   `-- classes.vc
|   |   |-- linespec
|   |   |   |-- Actor.DoomAttack.vc
|   |   |   |-- Actor.DoomSpecific.vc
|   |   |   |-- Actor.FlagsAndAppearance.vc
|   |   |   |-- Actor.FreezeDeath.vc
|   |   |   |-- Actor.GenericAttacks.vc
|   |   |   |-- Actor.Heretic.vc
|   |   |   |-- Actor.Hexen.vc
|   |   |   |-- Actor.HexenWeapons.vc
|   |   |   |-- Actor.Inventory.vc
|   |   |   |-- Actor.Misc.vc
|   |   |   |-- Actor.MissileMovement.vc
|   |   |   |-- Actor.MonsterAi.vc
|   |   |   |-- Actor.Sound.vc
|   |   |   |-- Actor.Spawn.vc
|   |   |   |-- Actor.Special.vc
|   |   |   |-- Actor.StateJump.vc
|   |   |   |-- Actor.States.vc
|   |   |   |-- Actor.Strife.vc
|   |   |   |-- ActorMover.vc
|   |   |   |-- AimingCamera.vc
|   |   |   |-- AmbientSound.vc
|   |   |   |-- Ammo.vc
|   |   |   |-- AmmoFillup.vc
|   |   |   |-- Armor.vc
|   |   |   |-- ArtiBlastRadius.vc
|   |   |   |-- ArtiBoostArmor.vc
|   |   |   |-- ArtiDarkServant.vc
|   |   |   |-- ArtiHealingRadius.vc
|   |   |   |-- ArtiPoisonBag.vc
|   |   |   |-- ArtiTeleport.vc
|   |   |   |-- ArtiTeleportOther.vc
|   |   |   |-- ArtiTimeBomb.vc
|   |   |   |-- ArtiTomeOfPower.vc
|   |   |   |-- BackpackItem.vc
|   |   |   |-- BasicArmor.vc
|   |   |   |-- BasicArmorBonus.vc
|   |   |   |-- BasicArmorPickup.vc
|   |   |   |-- BlasterFX1.vc
|   |   |   |-- BossSpot.vc
|   |   |   |-- BrainState.vc
|   |   |   |-- Bridge.vc
|   |   |   |-- BridgeBall.vc
|   |   |   |-- CFlameMissile.vc
|   |   |   |-- CWeapWraithverge.vc
|   |   |   |-- CeilingMover.vc
|   |   |   |-- CeilingWaggle.vc
|   |   |   |-- ChickenPlayer.vc
|   |   |   |-- ClericWeapon.vc
|   |   |   |-- ClericWeaponPiece.vc
|   |   |   |-- CloseDoor222.vc
|   |   |   |-- Coin.vc
|   |   |   |-- CustomInventory.vc
|   |   |   |-- DegninOre.vc
|   |   |   |-- DoomBuilderCamera.vc
|   |   |   |-- DummyStrifeItem.vc
|   |   |   |-- DynamicLight.vc
|   |   |   |-- Elevator.vc
|   |   |   |-- EntityEx.AiUtils.vc
|   |   |   |-- EntityEx.Damage.vc
|   |   |   |-- EntityEx.Defaults.vc
|   |   |   |-- EntityEx.Head.vc
|   |   |   |-- EntityEx.Inventory.vc
|   |   |   |-- EntityEx.LineAttack.vc
|   |   |   |-- EntityEx.Misc.vc
|   |   |   |-- EntityEx.Morph.vc
|   |   |   |-- EntityEx.Physics.vc
|   |   |   |-- EntityEx.SpawnMissile.vc
|   |   |   |-- FSwordMissile.vc
|   |   |   |-- FWeapAxe.vc
|   |   |   |-- FakeInventory.vc
|   |   |   |-- FastProjectile.vc
|   |   |   |-- FighterWeapon.vc
|   |   |   |-- FighterWeaponPiece.vc
|   |   |   |-- FireFlicker.vc
|   |   |   |-- FlashFader.vc
|   |   |   |-- FloorMover.vc
|   |   |   |-- FloorWaggle.vc
|   |   |   |-- ForceFieldGuard.vc
|   |   |   |-- FourthWeaponHolder.vc
|   |   |   |-- FourthWeaponPiece.vc
|   |   |   |-- FrostMissile.vc
|   |   |   |-- GlassShard.vc
|   |   |   |-- GlowingLight.vc
|   |   |   |-- HateTarget.vc
|   |   |   |-- Health.vc
|   |   |   |-- HealthFillup.vc
|   |   |   |-- HealthPickup.vc
|   |   |   |-- HealthTraining.vc
|   |   |   |-- Heresiarch.vc
|   |   |   |-- HereticWeapon.vc
|   |   |   |-- HexenArmor.vc
|   |   |   |-- HexenWeapon.vc
|   |   |   |-- HolySpirit.vc
|   |   |   |-- HornRodFX2.vc
|   |   |   |-- IceChunk.vc
|   |   |   |-- IceChunkHead.vc
|   |   |   |-- InterpolationPoint.vc
|   |   |   |-- InterpolationSpecial.vc
|   |   |   |-- Inventory.vc
|   |   |   |-- InvisibleBridge.vc
|   |   |   |-- InvisibleBridge16.vc
|   |   |   |-- InvisibleBridge32.vc
|   |   |   |-- InvisibleBridge8.vc
|   |   |   |-- Key.vc
|   |   |   |-- LightEffect.vc
|   |   |   |-- LightFlash.vc
|   |   |   |-- Lighting.vc
|   |   |   |-- Lightning.vc
|   |   |   |-- LightningThinker.vc
|   |   |   |-- LightningZap.vc
|   |   |   |-- LineSpecialClientGame.vc
|   |   |   |-- LineSpecialGameInfo.vc
|   |   |   |-- LineSpecialLevelInfo.vc
|   |   |   |-- LookAtCamera.vc
|   |   |   |-- LoreShot.vc
|   |   |   |-- LowerStackLookOnly.vc
|   |   |   |-- MWeapBloodscourge.vc
|   |   |   |-- Mace.vc
|   |   |   |-- MaceFX4.vc
|   |   |   |-- Macil1.vc
|   |   |   |-- MageStaffFX2.vc
|   |   |   |-- MageWandMissile.vc
|   |   |   |-- MageWeapon.vc
|   |   |   |-- MageWeaponPiece.vc
|   |   |   |-- MapRevealer.vc
|   |   |   |-- Meat.vc
|   |   |   |-- Minotaur.vc
|   |   |   |-- MinotaurFriend.vc
|   |   |   |-- MorphProjectile.vc
|   |   |   |-- MorphedMonster.vc
|   |   |   |-- OpenDoor222.vc
|   |   |   |-- OpenDoor224.vc
|   |   |   |-- Oracle.vc
|   |   |   |-- ParticleFountain.vc
|   |   |   |-- PathFollower.vc
|   |   |   |-- PatrolSpecial.vc
|   |   |   |-- PhasedLight.vc
|   |   |   |-- PhoenixFX1.vc
|   |   |   |-- PhoenixFX2.vc
|   |   |   |-- PhoenixRod.vc
|   |   |   |-- PhoenixRodPowered.vc
|   |   |   |-- PhosphorousFire.vc
|   |   |   |-- PickupFlash.vc
|   |   |   |-- PigPlayer.vc
|   |   |   |-- Pillar.vc
|   |   |   |-- PlaneWatcher.vc
|   |   |   |-- Platform.vc
|   |   |   |-- PlayerChunk.vc
|   |   |   |-- PlayerEx.vc
|   |   |   |-- PlayerPawn.vc
|   |   |   |-- PointLight.vc
|   |   |   |-- PointLightFlicker.vc
|   |   |   |-- PointLightFlickerRandom.vc
|   |   |   |-- PointLightPulse.vc
|   |   |   |-- PointPuller.vc
|   |   |   |-- PointPusher.vc
|   |   |   |-- PoisonBolt.vc
|   |   |   |-- PoisonCloud.vc
|   |   |   |-- PolyobjDoor.vc
|   |   |   |-- PolyobjMover.vc
|   |   |   |-- PolyobjRotator.vc
|   |   |   |-- PolyobjThinker.vc
|   |   |   |-- Pottery1.vc
|   |   |   |-- PowerCoupling.vc
|   |   |   |-- PowerDamage.vc
|   |   |   |-- PowerFlight.vc
|   |   |   |-- PowerGhost.vc
|   |   |   |-- PowerInfiniteAmmo.vc
|   |   |   |-- PowerInvisibility.vc
|   |   |   |-- PowerInvulnerable.vc
|   |   |   |-- PowerIronFeet.vc
|   |   |   |-- PowerLightAmp.vc
|   |   |   |-- PowerMask.vc
|   |   |   |-- PowerMinotaur.vc
|   |   |   |-- PowerMorph.vc
|   |   |   |-- PowerProtection.vc
|   |   |   |-- PowerRegeneration.vc
|   |   |   |-- PowerScanner.vc
|   |   |   |-- PowerShadow.vc
|   |   |   |-- PowerSpeed.vc
|   |   |   |-- PowerStrength.vc
|   |   |   |-- PowerTargeter.vc
|   |   |   |-- PowerTorch.vc
|   |   |   |-- PowerWeaponLevel2.vc
|   |   |   |-- Powerup.vc
|   |   |   |-- PowerupGiver.vc
|   |   |   |-- PrisonPass.vc
|   |   |   |-- Pusher.vc
|   |   |   |-- PuzzleItem.vc
|   |   |   |-- QuakeFocus.vc
|   |   |   |-- RainPillar.vc
|   |   |   |-- RainPlayer2.vc
|   |   |   |-- RainPlayer3.vc
|   |   |   |-- RainPlayer4.vc
|   |   |   |-- RaiseAlarm.vc
|   |   |   |-- RandomSpawner.vc
|   |   |   |-- Ripper.vc
|   |   |   |-- Scanner.vc
|   |   |   |-- ScriptedMarine.vc
|   |   |   |-- Scroller.vc
|   |   |   |-- SecActEnter.vc
|   |   |   |-- SecActExit.vc
|   |   |   |-- SecActEyesAboveC.vc
|   |   |   |-- SecActEyesBelowC.vc
|   |   |   |-- SecActEyesDive.vc
|   |   |   |-- SecActEyesSurface.vc
|   |   |   |-- SecActHitCeiling.vc
|   |   |   |-- SecActHitFakeFloor.vc
|   |   |   |-- SecActHitFloor.vc
|   |   |   |-- SecActUse.vc
|   |   |   |-- SecActUseWall.vc
|   |   |   |-- SecretTrigger.vc
|   |   |   |-- SectorAction.vc
|   |   |   |-- SectorMover.vc
|   |   |   |-- SectorPointLight.vc
|   |   |   |-- SectorSilencer.vc
|   |   |   |-- SectorThinker.vc
|   |   |   |-- SecurityCamera.vc
|   |   |   |-- Sigil.vc
|   |   |   |-- SkyPicker.vc
|   |   |   |-- SkyViewpoint.vc
|   |   |   |-- SlideshowStarter.vc
|   |   |   |-- SorcBall.vc
|   |   |   |-- SorcBall1.vc
|   |   |   |-- SorcBall2.vc
|   |   |   |-- SorcBall3.vc
|   |   |   |-- Sorcerer2.vc
|   |   |   |-- SoundEnvironment.vc
|   |   |   |-- SoundSequence.vc
|   |   |   |-- SoundSequenceSlot.vc
|   |   |   |-- Spark.vc
|   |   |   |-- SpecialSpot.vc
|   |   |   |-- SpectralMonster.vc
|   |   |   |-- StackPoint.vc
|   |   |   |-- StairStepMover.vc
|   |   |   |-- StaticLightSource.vc
|   |   |   |-- StaticRGBLightSource.vc
|   |   |   |-- Strobe.vc
|   |   |   |-- SwitchableDecoration.vc
|   |   |   |-- SwitchingDecoration.vc
|   |   |   |-- TelOtherFX1.vc
|   |   |   |-- TeleportDest.vc
|   |   |   |-- TeleportDest2.vc
|   |   |   |-- TeleportDest3.vc
|   |   |   |-- TeleportFog.vc
|   |   |   |-- TeleporterBeacon.vc
|   |   |   |-- TextureChangeDoor.vc
|   |   |   |-- ThrustFloorDown.vc
|   |   |   |-- UpgradeAccuracy.vc
|   |   |   |-- UpgradeStamina.vc
|   |   |   |-- UpperStackLookOnly.vc
|   |   |   |-- VerticalDoor.vc
|   |   |   |-- WallLightTransfer.vc
|   |   |   |-- WaterZone.vc
|   |   |   |-- Weapon.vc
|   |   |   |-- WeaponGiver.vc
|   |   |   |-- WeaponHolder.vc
|   |   |   |-- WeaponPiece.vc
|   |   |   |-- Whirlwind.vc
|   |   |   |-- WorldInfoEx.vc
|   |   |   |-- ZBell.vc
|   |   |   |-- ZBridge.vc
|   |   |   |-- ZCorpseLynchedNoHeart.vc
|   |   |   `-- classes.vc
|   |   `-- uibase
|   |       |-- ClientGameShared.vc
|   |       |-- ConDialog.vc
|   |       |-- ConDlgChoice.vc
|   |       |-- FinaleBackground.vc
|   |       |-- FinaleScreen.vc
|   |       |-- HUDMessage.vc
|   |       |-- HUDMessageFadeInOut.vc
|   |       |-- HUDMessageFadeOut.vc
|   |       |-- HUDMessageTypeOnFadeOut.vc
|   |       |-- IntermissionBackground.vc
|   |       |-- MenuBigTextButton.vc
|   |       |-- MenuChoice.vc
|   |       |-- MenuChoiceEnum.vc
|   |       |-- MenuChoiceEpisode.vc
|   |       |-- MenuChoicePClass.vc
|   |       |-- MenuChoiceSkill.vc
|   |       |-- MenuChoiceSlider.vc
|   |       |-- MenuChoiceSlot.vc
|   |       |-- MenuChoice_LoadSlot.vc
|   |       |-- MenuChoice_OnOff.vc
|   |       |-- MenuChoice_SaveSlot.vc
|   |       |-- MenuControlKey.vc
|   |       |-- MenuInputLine.vc
|   |       |-- MenuModel.vc
|   |       |-- MenuSList.vc
|   |       |-- MenuSaveSlot.vc
|   |       |-- MenuScreen.vc
|   |       |-- MenuScreenAdvancedVideoOptions.vc
|   |       |-- MenuScreenClass.vc
|   |       |-- MenuScreenControls.vc
|   |       |-- MenuScreenEpisode.vc
|   |       |-- MenuScreenJoinGame.vc
|   |       |-- MenuScreenLoadGame.vc
|   |       |-- MenuScreenMasterList.vc
|   |       |-- MenuScreenMouseOptions.vc
|   |       |-- MenuScreenSList.vc
|   |       |-- MenuScreenSaveGame.vc
|   |       |-- MenuScreenScreenResolution.vc
|   |       |-- MenuScreenSinglePlayer.vc
|   |       |-- MenuScreenSkill.vc
|   |       |-- MenuScreenSoundOptions.vc
|   |       |-- MenuScreenVideoOptions.vc
|   |       |-- MenuSelector_Big.vc
|   |       |-- MenuSelector_SmallLeft.vc
|   |       |-- MenuSelector_SmallRight.vc
|   |       |-- MenuSmallTextButton.vc
|   |       |-- MenuSpriteAnim.vc
|   |       |-- MenuStaticAnim.vc
|   |       |-- MenuStaticBitmap.vc
|   |       |-- MenuTextButton.vc
|   |       |-- MenuTitleText.vc
|   |       |-- StatusBarShared.vc
|   |       `-- classes.vc
|   `-- game
|       |-- BotPlayer.vc
|       |-- HexenDefs.vc
|       |-- HexenLevelInfo.vc
|       |-- MainGameInfo.vc
|       |-- Player.vc
|       |-- PlayerSpeed.vc
|       `-- classes.vc
`-- saves
    `-- save9.vsg
[/spoiler:327y0keu] Is this correct ? I'm trying to launch my modified game, I specify "myhexgame" as custom game in vavoom launcher. The same way I used for others mods with a separate directory. The game runs, but I get no indication that my mod affects the game. It's just progs, so I commented out afrit's sound and removed 'ripping' effect from mage's wand. No effect. I thought vavoom no longer requires progs to be compiled ? By the way, where should 'actors' directory be located in my mod ? Currently, "DECORATE files" are used from basepak.pk3, from basev ( I know this because Afrit shoots more fireballs than 3). I would like to mod using DECORATE, while having "myhexgame" as a custom game. If you can answer my questions it would be best to update the wiki: <!-- m --><a class="postlink" href="http://www.vavoom-engine.com/wiki/index.php?title=Editing#File_system">http://www.vavoom-engine.com/wiki/index ... ile_system</a><!-- m --> edit[:/b] I got "actors" directory to work from "myhexgame" directory, but "progs" are still taken from basev, not from "myhexgame".
Thu, 03 Jun 2010 19:23:19

b0rsuk

I'm trying to make Imps shoot inaccurately, by adding a random number to their angle. Unfortunately I've been unable to find the implementation of Partial Invisibility - there may be a better way. Here's my try:
	randangle = P_Random() % 15;
	if (P_Random() % 2 == 0)
	{
	    randangle *= -1;
	}

	// launch a missile, 60.0 is tmp -b0rsuk
	SpawnMissileAngle(DoomImpBall, Angles.yaw + itof(randangle), 60.0);
I don't know a good way to find the angle to target. I just took Angles.yaw, but because imps don't look up or down I can only make them shoot horizontally. I can't just use SpawnMissile, because the function requires a target entity.
Fri, 04 Jun 2010 18:13:34

Firebrand

Check A_FaceTarget method inside Actor.MonsterAi.vc <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->.
Fri, 04 Jun 2010 20:03:27

Janis Legzdinsh

VectorAngles()
Fri, 11 Jun 2010 19:02:58

b0rsuk

Ok, no more stupid math questions until I finish going through my high school math books and especially Trigonometry. Meanwhile... I try to design a custom attack for those cute Hexen ettins, but I fail. I started by designing an attack in Actor.Hexen.vc:
final void A_Borsuk() // temporary !!
{
A_TroopAttack() // DooM Imp attack
}
Then I added this line to ettin.txt in Actors:
ETTN E 1 A_Borsuk
I launch the mod, it doesn't crash (yay !) but no effect when an ettin attacks. If I just use A_TroopAttack directly in ettin.txt, it works, and it's easy to see because DooM Imps do instant damage in melee. If I modify one of existing attacks in Actors.Hexen.vc, the effect is visible in game. It's just the my new attack that produces no effect. What am I missing ? By the way, I tried just using VavoomC function (Thrust(angle, power)) directly in Decorate, but I guess it's not possible - it crashed. Can I only call functions which take no arguments in decorate ? What determines which functions can be used in Decorate ?
Fri, 11 Jun 2010 19:15:06

Firebrand

Have a look at what A_TroopAttack does:
	// launch a missile
	SpawnMissile(Target, DoomImpBall);
It spawns a Projectile of class DoomImpBall, did you add it to your MOD? If you didn't then the game isn't spawning it because the class doesn't exists or it doesn't has any sprites <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->, DoomImpBall uses sprites named BAL1A0 and BAL1B0, hope this helps you out <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->.
Fri, 11 Jun 2010 19:24:44

b0rsuk

[quote="Firebrand":1yinfsrw]Have a look at what A_TroopAttack does: Thanks for very fast repply, but unfortunately you're wrong ! I already said A_TroopAttack works if called directly from DECORATE. I know how it works because I already changed imps to be inaccurate (with your help). There's no DoomImpBall to be spawned, because A_TroopAttack first checks for an enemy in melee range. I made Ettins use A_TroopAttack in melee, so it's too close for ball and they scratch me instead. Like I wrote above, instant melee damage happens, as with imps. Problems start when I try to use my own defined attack (see the post above). I tried wrapping other functions inside my A_Borsuk(), such as: PlaySound('BlastRadius', CHAN_VOICE); dprint("Alamakota"); And it didn't work either.
Sat, 12 Jun 2010 14:15:41

Firebrand

OK then, I've got a second solution, the problem seems to be that the function hasn't been made native for actors to use, making this is really simple, inside 'basev\common\' there's a nativeclasses.txt file, just add the A_Borsurk(); method there, this should make the method native for actors to use <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->. Make sure that A_Borsurk method is declared inside any for the Actor.xx files or it won't work fine, hope this helps you out.
Sat, 12 Jun 2010 20:28:57

Janis Legzdinsh

It seams you forgot to declare it as a native action. Take a look for example at actors/hexen/dragon.txt.

Back to the Vavoom Forum Archives