Nick's BIG DSB thread and Dungeon Re-Master

This forum is for the Lua scriptable clone of DM/CSB called Dungeon Strikes Back by Sophia. Use DSB to build your own highly customised games.

Moderator: Sophia

Forum rules
Please read the Forum rules and policies before posting.
User avatar
Automaton
Journeyman
Posts: 88
Joined: Sat Aug 28, 2004 10:49 am

Nick's BIG DSB thread and Dungeon Re-Master

Post by Automaton »

Hilo!

As you (the maybe 3 people reading this may know), I have recently taken a shine to DSB and decided to use it as a platform to remake Dungeon Master to my own tastes in DSB, under the working title "Dungeon Re-Master". I like DSB and I'm starting to get the hang of Lua so it makes sense to do it in this.

I intend to use this thread to post my updates, ask question, get feedback and anything else germane to the topic.

I fully intend to do this solo, but if anyone wishes to help, then feel free to chip in. Im not too bad at graphics and as I may have already said, Im a composer so music and SFX are not a problem at all.

Anyhoo, I've had some ideas (try many many) and I just want to throw these out quickly to see what you loverly people think, in terms of feasibility in DSB. I don't mind slogging it out myself, but I don't want to try something the engine is just not capable of doing. If you have already done something similar, please post code and or examples.

1. Multiple attack sounds for monsters, with DSB choosing one randomly.

2. Give monsters a "I've spotted you" sound. I remember opening doors in Doom and hearing that reverb-y grunt from those pink demons - I want that in DM for certain monsters, with others being silent stalkers.

3. Give monsters a "Runawaaaaaay" sound. Plays when monsters get feared by you.

4. Give monsters an ambient sound that moves with them. Like buzzing fly sounds around a mummy or zombie for example.

5. Adding a viewport shake effect to monsters moving. I want to make large things like golems and dragons more imposing.

I know from looking at monfulir's dungeons about the dsb_viewport_distort thingy and tested the different effects. Are these all hard coded? Can we make our own?

6. Is it possible to have a spell effect that spins the party or monsters randomly?

Here is how my current UI is looking, I've replaced most of the graphics
Image
Fountain
ImageImage

Cheers!
Nick K
User avatar
Automaton
Journeyman
Posts: 88
Joined: Sat Aug 28, 2004 10:49 am

Re: Nick's BIG DSB thread and Dungeon Re-Master

Post by Automaton »

@Sophia,

I thought taking the localtxt one step further would be in order (I needed to turn things to proper case instead of full caps) so I did this in my objects file:

Code: Select all

--Externalize all base dungeon item names-------------------------------------------------

obj.bones.name=dsb_locstr("obj.bones.name")
obj.torch.name=dsb_locstr("obj.torch.name")
obj.torch_x.name=dsb_locstr("obj.torch_x.name")
obj.dart.name=dsb_locstr("obj.dart.name")
obj.dart_csb.name=dsb_locstr("obj.dart_csb.name")
obj.throwing_star.name=dsb_locstr("obj.throwing_star.name")
obj.arrow.name=dsb_locstr("obj.arrow.name")
obj.slayer.name=dsb_locstr("obj.slayer.name")
obj.rock.name=dsb_locstr("obj.rock.name")
obj.dagger.name=dsb_locstr("obj.dagger.name")
obj.poison_desven.name=dsb_locstr("obj.poison_desven.name")
obj.poison_slime.name=dsb_locstr("obj.poison_slime.name")
obj.poison_ohven.name=dsb_locstr("obj.poison_ohven.name")
obj.fireball.name=dsb_locstr("obj.fireball.name")
obj.desewspell.name=dsb_locstr("obj.desewspell.name")
obj.lightning.name=dsb_locstr("obj.lightning.name")
obj.zospell.name=dsb_locstr("obj.zospell.name")
obj.zokathra.name=dsb_locstr("obj.zokathra.name")
obj.flamitt.name=dsb_locstr("obj.flamitt.name")
obj.flamitt_x.name=dsb_locstr("obj.flamitt_x.name")
obj.flask.name=dsb_locstr("obj.flask.name")
obj.flask_bro.name=dsb_locstr("obj.flask_bro.name")
obj.flask_dane.name=dsb_locstr("obj.flask_dane.name")
obj.flask_ee.name=dsb_locstr("obj.flask_ee.name")
obj.flask_ku.name=dsb_locstr("obj.flask_ku.name")
obj.flask_mon.name=dsb_locstr("obj.flask_mon.name")
obj.flask_neta.name=dsb_locstr("obj.flask_neta.name")
obj.flask_ros.name=dsb_locstr("obj.flask_ros.name")
obj.flask_vi.name=dsb_locstr("obj.flask_vi.name")
obj.flask_ya.name=dsb_locstr("obj.flask_ya.name")
obj.flask_water.name=dsb_locstr("obj.flask_water.name")
obj.flask_water_yucky.name=dsb_locstr("obj.flask_water_yucky.name")
obj.flask_sar.name=dsb_locstr("obj.flask_sar.name")
obj.flask_zo.name=dsb_locstr("obj.flask_zo.name")
obj.fulbomb.name=dsb_locstr("obj.fulbomb.name")
obj.venbomb.name=dsb_locstr("obj.venbomb.name")
obj.horn_of_fear.name=dsb_locstr("obj.horn_of_fear.name")
obj.rope.name=dsb_locstr("obj.rope.name")
obj.magicbox_blue.name=dsb_locstr("obj.magicbox_blue.name")
obj.magicbox_green.name=dsb_locstr("obj.magicbox_green.name")
obj.eye_of_time.name=dsb_locstr("obj.eye_of_time.name")
obj.eye_of_time_x.name=dsb_locstr("obj.eye_of_time_x.name")
obj.stormring.name=dsb_locstr("obj.stormring.name")
obj.stormring_x.name=dsb_locstr("obj.stormring_x.name")
obj.wand.name=dsb_locstr("obj.wand.name")
obj.wand_x.name=dsb_locstr("obj.wand_x.name")
obj.teowand.name=dsb_locstr("obj.teowand.name")
obj.teowand_x.name=dsb_locstr("obj.teowand_x.name")
obj.staff.name=dsb_locstr("obj.staff.name")
obj.staff_claws.name=dsb_locstr("obj.staff_claws.name")
obj.staff_claws_x.name=dsb_locstr("obj.staff_claws_x.name")
obj.staff_yew.name=dsb_locstr("obj.staff_yew.name")
obj.staff_yew_x.name=dsb_locstr("obj.staff_yew_x.name")
obj.staff_manar.name=dsb_locstr("obj.staff_manar.name")
obj.staff_manar_x.name=dsb_locstr("obj.staff_manar_x.name")
obj.staff_irra.name=dsb_locstr("obj.staff_irra.name")
obj.staff_irra_x.name=dsb_locstr("obj.staff_irra_x.name")
obj.staff_snake.name=dsb_locstr("obj.staff_snake.name")
obj.staff_neta.name=dsb_locstr("obj.staff_neta.name")
obj.staff_conduit.name=dsb_locstr("obj.staff_conduit.name")
obj.staff_conduit_x.name=dsb_locstr("obj.staff_conduit_x.name")
obj.staff_serpent.name=dsb_locstr("obj.staff_serpent.name")
obj.staff_serpent_x.name=dsb_locstr("obj.staff_serpent_x.name")
obj.dragon_spit.name=dsb_locstr("obj.dragon_spit.name")
obj.dragon_spit_x.name=dsb_locstr("obj.dragon_spit_x.name")
obj.firestaff.name=dsb_locstr("obj.firestaff.name")
obj.firestaff_gem.name=dsb_locstr("obj.firestaff_gem.name")
obj.lyf.name=dsb_locstr("obj.lyf.name")
obj.lyf_x.name=dsb_locstr("obj.lyf_x.name")
obj.cape.name=dsb_locstr("obj.cape.name")
obj.cloak_night.name=dsb_locstr("obj.cloak_night.name")
obj.halter.name=dsb_locstr("obj.halter.name")
obj.tattered_shirt.name=dsb_locstr("obj.tattered_shirt.name")
obj.robe_top.name=dsb_locstr("obj.robe_top.name")
obj.robe_fine_top.name=dsb_locstr("obj.robe_fine_top.name")
obj.kirtle.name=dsb_locstr("obj.kirtle.name")
obj.silk_shirt.name=dsb_locstr("obj.silk_shirt.name")
obj.elven_doublet.name=dsb_locstr("obj.elven_doublet.name")
obj.leather_jerkin.name=dsb_locstr("obj.leather_jerkin.name")
obj.tunic.name=dsb_locstr("obj.tunic.name")
obj.ghi.name=dsb_locstr("obj.ghi.name")
obj.mail_aketon.name=dsb_locstr("obj.mail_aketon.name")
obj.mithral_aketon.name=dsb_locstr("obj.mithral_aketon.name")
obj.flamebain.name=dsb_locstr("obj.flamebain.name")
obj.torsoplate.name=dsb_locstr("obj.torsoplate.name")
obj.torsoplate_cursed.name=dsb_locstr("obj.torsoplate_cursed.name")
obj.torsoplate_lyte.name=dsb_locstr("obj.torsoplate_lyte.name")
obj.torsoplate_ra.name=dsb_locstr("obj.torsoplate_ra.name")
obj.torsoplate_darc.name=dsb_locstr("obj.torsoplate_darc.name")
obj.torsoplate_dragon.name=dsb_locstr("obj.torsoplate_dragon.name")
obj.barbarian_hide.name=dsb_locstr("obj.barbarian_hide.name")
obj.tattered_pants.name=dsb_locstr("obj.tattered_pants.name")
obj.robe_bottom.name=dsb_locstr("obj.robe_bottom.name")
obj.robe_fine_bottom.name=dsb_locstr("obj.robe_fine_bottom.name")
obj.tabard.name=dsb_locstr("obj.tabard.name")
obj.gunna.name=dsb_locstr("obj.gunna.name")
obj.elven_huke.name=dsb_locstr("obj.elven_huke.name")
obj.leather_pants.name=dsb_locstr("obj.leather_pants.name")
obj.blue_pants.name=dsb_locstr("obj.blue_pants.name")
obj.ghi_trousers.name=dsb_locstr("obj.ghi_trousers.name")
obj.leg_mail.name=dsb_locstr("obj.leg_mail.name")
obj.mithral_mail.name=dsb_locstr("obj.mithral_mail.name")
obj.legplate.name=dsb_locstr("obj.legplate.name")
obj.legplate_cursed.name=dsb_locstr("obj.legplate_cursed.name")
obj.legplate_lyte.name=dsb_locstr("obj.legplate_lyte.name")
obj.legplate_ra.name=dsb_locstr("obj.legplate_ra.name")
obj.legplate_darc.name=dsb_locstr("obj.legplate_darc.name")
obj.legplate_dragon.name=dsb_locstr("obj.legplate_dragon.name")
obj.powertowers.name=dsb_locstr("obj.powertowers.name")
obj.berzerker_helm.name=dsb_locstr("obj.berzerker_helm.name")
obj.berzerker_helm_csb.name=dsb_locstr("obj.berzerker_helm_csb.name")
obj.helmet.name=dsb_locstr("obj.helmet.name")
obj.basinet.name=dsb_locstr("obj.basinet.name")
obj.casquencoif.name=dsb_locstr("obj.casquencoif.name")
obj.armet.name=dsb_locstr("obj.armet.name")
obj.armet_cursed.name=dsb_locstr("obj.armet_cursed.name")
obj.helm_lyte.name=dsb_locstr("obj.helm_lyte.name")
obj.helm_ra.name=dsb_locstr("obj.helm_ra.name")
obj.helm_darc.name=dsb_locstr("obj.helm_darc.name")
obj.helm_dragon.name=dsb_locstr("obj.helm_dragon.name")
obj.dexhelm.name=dsb_locstr("obj.dexhelm.name")
obj.calista.name=dsb_locstr("obj.calista.name")
obj.crown_nerra.name=dsb_locstr("obj.crown_nerra.name")
obj.sandals.name=dsb_locstr("obj.sandals.name")
obj.boots_suede.name=dsb_locstr("obj.boots_suede.name")
obj.boots_leather.name=dsb_locstr("obj.boots_leather.name")
obj.hosen.name=dsb_locstr("obj.hosen.name")
obj.footplate.name=dsb_locstr("obj.footplate.name")
obj.footplate_cursed.name=dsb_locstr("obj.footplate_cursed.name")
obj.footplate_lyte.name=dsb_locstr("obj.footplate_lyte.name")
obj.footplate_ra.name=dsb_locstr("obj.footplate_ra.name")
obj.footplate_darc.name=dsb_locstr("obj.footplate_darc.name")
obj.footplate_dragon.name=dsb_locstr("obj.footplate_dragon.name")
obj.boots_elven.name=dsb_locstr("obj.boots_elven.name")
obj.boots_speed.name=dsb_locstr("obj.boots_speed.name")
obj.club.name=dsb_locstr("obj.club.name")
obj.club_stone.name=dsb_locstr("obj.club_stone.name")
obj.boltblade.name=dsb_locstr("obj.boltblade.name")
obj.boltblade_x.name=dsb_locstr("obj.boltblade_x.name")
obj.storm.name=dsb_locstr("obj.storm.name")
obj.storm_x.name=dsb_locstr("obj.storm_x.name")
obj.fury.name=dsb_locstr("obj.fury.name")
obj.fury_x.name=dsb_locstr("obj.fury_x.name")
obj.rablade.name=dsb_locstr("obj.rablade.name")
obj.rablade_x.name=dsb_locstr("obj.rablade_x.name")
obj.falchion.name=dsb_locstr("obj.falchion.name")
obj.sword.name=dsb_locstr("obj.sword.name")
obj.sword_cursed.name=dsb_locstr("obj.sword_cursed.name")
obj.rapier.name=dsb_locstr("obj.rapier.name")
obj.sabre.name=dsb_locstr("obj.sabre.name")
obj.biter.name=dsb_locstr("obj.biter.name")
obj.sword_samurai.name=dsb_locstr("obj.sword_samurai.name")
obj.delta.name=dsb_locstr("obj.delta.name")
obj.side_splitter.name=dsb_locstr("obj.side_splitter.name")
obj.diamond_edge.name=dsb_locstr("obj.diamond_edge.name")
obj.inquisitor.name=dsb_locstr("obj.inquisitor.name")
obj.dragon_fang.name=dsb_locstr("obj.dragon_fang.name")
obj.vorpal.name=dsb_locstr("obj.vorpal.name")
obj.axe.name=dsb_locstr("obj.axe.name")
obj.hardcleave.name=dsb_locstr("obj.hardcleave.name")
obj.executioner.name=dsb_locstr("obj.executioner.name")
obj.mace.name=dsb_locstr("obj.mace.name")
obj.mace_order.name=dsb_locstr("obj.mace_order.name")
obj.morningstar.name=dsb_locstr("obj.morningstar.name")
obj.bow.name=dsb_locstr("obj.bow.name")
obj.bow_claw.name=dsb_locstr("obj.bow_claw.name")
obj.crossbow.name=dsb_locstr("obj.crossbow.name")
obj.speedbow.name=dsb_locstr("obj.speedbow.name")
obj.sling.name=dsb_locstr("obj.sling.name")
obj.shield_buckler.name=dsb_locstr("obj.shield_buckler.name")
obj.shield_neta.name=dsb_locstr("obj.shield_neta.name")
obj.shield_hide.name=dsb_locstr("obj.shield_hide.name")
obj.shield_crystal.name=dsb_locstr("obj.shield_crystal.name")
obj.shield_small.name=dsb_locstr("obj.shield_small.name")
obj.shield_wood.name=dsb_locstr("obj.shield_wood.name")
obj.shield_large.name=dsb_locstr("obj.shield_large.name")
obj.shield_sar.name=dsb_locstr("obj.shield_sar.name")
obj.shield_lyte.name=dsb_locstr("obj.shield_lyte.name")
obj.shield_ra.name=dsb_locstr("obj.shield_ra.name")
obj.shield_darc.name=dsb_locstr("obj.shield_darc.name")
obj.shield_dragon.name=dsb_locstr("obj.shield_dragon.name")
obj.choker.name=dsb_locstr("obj.choker.name")
obj.jewelsymal.name=dsb_locstr("obj.jewelsymal.name")
obj.illumulet.name=dsb_locstr("obj.illumulet.name")
obj.gem_of_ages.name=dsb_locstr("obj.gem_of_ages.name")
obj.ekkhard_cross.name=dsb_locstr("obj.ekkhard_cross.name")
obj.moonstone.name=dsb_locstr("obj.moonstone.name")
obj.hellion.name=dsb_locstr("obj.hellion.name")
obj.pendant_feral.name=dsb_locstr("obj.pendant_feral.name")
obj.compass_n.name=dsb_locstr("obj.compass_n.name")
obj.compass_e.name=dsb_locstr("obj.compass_e.name")
obj.compass_s.name=dsb_locstr("obj.compass_s.name")
obj.compass_w.name=dsb_locstr("obj.compass_w.name")
obj.key_iron.name=dsb_locstr("obj.key_iron.name")
obj.key_b.name=dsb_locstr("obj.key_b.name")
obj.key_solid.name=dsb_locstr("obj.key_solid.name")
obj.key_square.name=dsb_locstr("obj.key_square.name")
obj.key_tourquoise.name=dsb_locstr("obj.key_tourquoise.name")
obj.key_cross.name=dsb_locstr("obj.key_cross.name")
obj.key_onyx.name=dsb_locstr("obj.key_onyx.name")
obj.key_skeleton.name=dsb_locstr("obj.key_skeleton.name")
obj.key_gold.name=dsb_locstr("obj.key_gold.name")
obj.key_winged.name=dsb_locstr("obj.key_winged.name")
obj.key_topaz.name=dsb_locstr("obj.key_topaz.name")
obj.key_sapphire.name=dsb_locstr("obj.key_sapphire.name")
obj.key_emerald.name=dsb_locstr("obj.key_emerald.name")
obj.key_ruby.name=dsb_locstr("obj.key_ruby.name")
obj.key_ra.name=dsb_locstr("obj.key_ra.name")
obj.key_master.name=dsb_locstr("obj.key_master.name")
obj.gem_blue.name=dsb_locstr("obj.gem_blue.name")
obj.gem_orange.name=dsb_locstr("obj.gem_orange.name")
obj.gem_green.name=dsb_locstr("obj.gem_green.name")
obj.coin_copper.name=dsb_locstr("obj.coin_copper.name")
obj.coin_silver.name=dsb_locstr("obj.coin_silver.name")
obj.coin_gold.name=dsb_locstr("obj.coin_gold.name")
obj.coin_gor.name=dsb_locstr("obj.coin_gor.name")
obj.coin_sar.name=dsb_locstr("obj.coin_sar.name")
obj.waterskin.name=dsb_locstr("obj.waterskin.name")
obj.waterskin_1.name=dsb_locstr("obj.waterskin_1.name")
obj.waterskin_2.name=dsb_locstr("obj.waterskin_2.name")
obj.waterskin_full.name=dsb_locstr("obj.waterskin_full.name")
obj.apple.name=dsb_locstr("obj.apple.name")
obj.bread.name=dsb_locstr("obj.bread.name")
obj.cheese.name=dsb_locstr("obj.cheese.name")
obj.corn.name=dsb_locstr("obj.corn.name")
obj.drumstick.name=dsb_locstr("obj.drumstick.name")
obj.shank.name=dsb_locstr("obj.shank.name")
obj.s_slice.name=dsb_locstr("obj.s_slice.name")
obj.worm_round.name=dsb_locstr("obj.worm_round.name")
obj.d_steak.name=dsb_locstr("obj.d_steak.name")
obj.scroll.name=dsb_locstr("obj.scroll.name")
obj.chest.name=dsb_locstr("obj.chest.name")
obj.lockpicks.name=dsb_locstr("obj.lockpicks.name")
obj.mirror_of_dawn.name=dsb_locstr("obj.mirror_of_dawn.name")
obj.magnifier.name=dsb_locstr("obj.magnifier.name")
obj.boulder.name=dsb_locstr("obj.boulder.name")
obj.ashes.name=dsb_locstr("obj.ashes.name")
obj.stick.name=dsb_locstr("obj.stick.name")
obj.corbum.name=dsb_locstr("obj.corbum.name")
obj.rabbits_foot.name=dsb_locstr("obj.rabbits_foot.name")
And added this to localtext

Code: Select all

--All base dungeon items----

obj.bones.name	Bones
obj.torch.name	Torch
obj.torch_x.name	Torch
obj.dart.name	Poison Dart
obj.dart_csb.name	Poison Dart
obj.throwing_star.name	Throwing Star
obj.arrow.name	Arrow
obj.slayer.name	Slayer
obj.rock.name	Rock
obj.dagger.name	Dagger
obj.poison_desven.name	Poison
obj.poison_slime.name	Slime
obj.poison_ohven.name	Poison
obj.fireball.name	Fireball
obj.desewspell.name	Des Ew Spell
obj.lightning.name	Lightning
obj.zospell.name	Zo Spell
obj.zokathra.name	Zokathra Spell
obj.flamitt.name	Flamitt
obj.flamitt_x.name	Flamitt
obj.flask.name	Empty Flask
obj.flask_bro.name	Bro Potion
obj.flask_dane.name	Dane Potion
obj.flask_ee.name	Ee Potion
obj.flask_ku.name	Ku Potion
obj.flask_mon.name	Mon Potion
obj.flask_neta.name	Neta Potion
obj.flask_ros.name	Ros Potion
obj.flask_vi.name	Vi Potion
obj.flask_ya.name	Ya Potion
obj.flask_water.name	Flask Of Water
obj.flask_water_yucky.name	Flask Of Water
obj.flask_sar.name	Sar_Potion
obj.flask_zo.name	Zo_Potion
obj.fulbomb.name	Ful Bomb
obj.venbomb.name	Ven Bomb
obj.horn_of_fear.name	Horn Of Fear
obj.rope.name	Rope
obj.magicbox_blue.name	Magical Box
obj.magicbox_green.name	Magical Box
obj.eye_of_time.name	Eye Of Time
obj.eye_of_time_x.name	Eye Of Time
obj.stormring.name	Stormring
obj.stormring_x.name	Stormring
obj.wand.name	Wand
obj.wand_x.name	Wand
obj.teowand.name	Teowand
obj.teowand_x.name	Teowand
obj.staff.name	Staff
obj.staff_claws.name	Staff Of Claws
obj.staff_claws_x.name	Staff Of Claws
obj.staff_yew.name	Yew Staff
obj.staff_yew_x.name	Yew Staff
obj.staff_manar.name	Staff Of Manar
obj.staff_manar_x.name	Staff Of Manar
obj.staff_irra.name	Staff Of Irra
obj.staff_irra_x.name	Staff Of Irra
obj.staff_snake.name	Snake Staff
obj.staff_neta.name	Cross Of Neta
obj.staff_conduit.name	The Conduit
obj.staff_conduit_x.name	The Conduit
obj.staff_serpent.name	Serpent Staff
obj.staff_serpent_x.name	Serpent Staff
obj.dragon_spit.name	Dragon Spit
obj.dragon_spit_x.name	Dragon Spit
obj.firestaff.name	The Firestaff
obj.firestaff_gem.name	The Firestaff
obj.lyf.name	Sceptre Of Lyf
obj.lyf_x.name	Sceptre Of Lyf
obj.cape.name	Cape
obj.cloak_night.name	Cloak Of Night
obj.halter.name	Halter
obj.tattered_shirt.name	Tattered Shirt
obj.robe_top.name	Robe
obj.robe_fine_top.name	Fine Robe
obj.kirtle.name	Kirtle
obj.silk_shirt.name	Silk Shirt
obj.elven_doublet.name	Elven Doublet
obj.leather_jerkin.name	Leather Jerkin
obj.tunic.name	Tunic
obj.ghi.name	Ghi
obj.mail_aketon.name	Mail Aketon
obj.mithral_aketon.name	Mithral Aketon
obj.flamebain.name	Flamebain
obj.torsoplate.name	Torso Plate
obj.torsoplate_cursed.name	Torso Plate
obj.torsoplate_lyte.name	Plate Of Lyte
obj.torsoplate_ra.name	Plate Of Ra
obj.torsoplate_darc.name	Plate Of Darc
obj.torsoplate_dragon.name	Dragon Plate
obj.barbarian_hide.name	Barbarian Hide
obj.tattered_pants.name	Tattered Pants
obj.robe_bottom.name	Robe
obj.robe_fine_bottom.name	Fine Robe
obj.tabard.name	Tabard
obj.gunna.name	Gunna
obj.elven_huke.name	Elven Huke
obj.leather_pants.name	Leather Pants
obj.blue_pants.name	Blue Pants
obj.ghi_trousers.name	Ghi Trousers
obj.leg_mail.name	Leg Mail
obj.mithral_mail.name	Mithral Mail
obj.legplate.name	Leg Plate
obj.legplate_cursed.name	Leg Plate
obj.legplate_lyte.name	Poleyn Of Lyte
obj.legplate_ra.name	Poleyn Of Ra
obj.legplate_darc.name	Poleyn Of Darc
obj.legplate_dragon.name	Dragon Poleyn
obj.powertowers.name	Powertowers
obj.berzerker_helm.name	Berzerker Helm
obj.berzerker_helm_csb.name	Berzerker Helm
obj.helmet.name	Helmet
obj.basinet.name	Basinet
obj.casquencoif.name	Casque'N Coif
obj.armet.name	Armet
obj.armet_cursed.name	Armet
obj.helm_lyte.name	Helm Of Lyte
obj.helm_ra.name	Helm Of Ra
obj.helm_darc.name	Helm Of Darc
obj.helm_dragon.name	Dragon Helm
obj.dexhelm.name	Dexhelm
obj.calista.name	Calista
obj.crown_nerra.name	Crown Of Nerra
obj.sandals.name	Sandals
obj.boots_suede.name	Suede Boots
obj.boots_leather.name	Leather Boots
obj.hosen.name	Hosen
obj.footplate.name	Foot Plate
obj.footplate_cursed.name	Foot Plate
obj.footplate_lyte.name	Greave Of Lyte
obj.footplate_ra.name	Greave Of Ra
obj.footplate_darc.name	Greave Of Darc
obj.footplate_dragon.name	Dragon Greave
obj.boots_elven.name	Elven Boots
obj.boots_speed.name	Boots Of Speed
obj.club.name	Club
obj.club_stone.name	Stone Club
obj.boltblade.name	Bolt Blade
obj.boltblade_x.name	Bolt Blade
obj.storm.name	Storm
obj.storm_x.name	Storm
obj.fury.name	Fury
obj.fury_x.name	Fury
obj.rablade.name	Ra Blade
obj.rablade_x.name	Ra Blade
obj.falchion.name	Falchion
obj.sword.name	Sword
obj.sword_cursed.name	Sword
obj.rapier.name	Rapier
obj.sabre.name	Sabre
obj.biter.name	Biter
obj.sword_samurai.name	Samurai Sword
obj.delta.name	Delta
obj.side_splitter.name	Side Splitter
obj.diamond_edge.name	Diamond Edge
obj.inquisitor.name	The Inquisitor
obj.dragon_fang.name	Dragon Fang
obj.vorpal.name	Vorpal Blade
obj.axe.name	Axe
obj.hardcleave.name	Hardcleave
obj.executioner.name	Executioner
obj.mace.name	Mace
obj.mace_order.name	Mace Of Order
obj.morningstar.name	Morningstar
obj.bow.name	Bow
obj.bow_claw.name	Claw Bow
obj.crossbow.name	Crossbow
obj.speedbow.name	Speedbow
obj.sling.name	Sling
obj.shield_buckler.name	Buckler
obj.shield_neta.name	Shield Of Neta
obj.shield_hide.name	Hide Shield
obj.shield_crystal.name	Crystal Shield
obj.shield_small.name	Small Shield
obj.shield_wood.name	Wooden Shield
obj.shield_large.name	Large Shield
obj.shield_sar.name	Sar Shield
obj.shield_lyte.name	Shield Of Lyte
obj.shield_ra.name	Shield Of Ra
obj.shield_darc.name	Shield Of Darc
obj.shield_dragon.name	Dragon Shield
obj.choker.name	Choker
obj.jewelsymal.name	Jewel Symal
obj.illumulet.name	Illumulet
obj.gem_of_ages.name	Gem Of Ages
obj.ekkhard_cross.name	Ekkhard Cross
obj.moonstone.name	Moonstone
obj.hellion.name	Hellion
obj.pendant_feral.name	Pendant Feral
obj.compass_n.name	Compass
obj.compass_e.name	Compass
obj.compass_s.name	Compass
obj.compass_w.name	Compass
obj.key_iron.name	Iron Key
obj.key_b.name	Key Of B
obj.key_solid.name	Solid Key
obj.key_square.name	Square Key
obj.key_tourquoise.name	Tourquoise Key
obj.key_cross.name	Cross Key
obj.key_onyx.name	Onyx Key
obj.key_skeleton.name	Skeleton Key
obj.key_gold.name	Gold Key
obj.key_winged.name	Winged Key
obj.key_topaz.name	Topaz Key
obj.key_sapphire.name	Sapphire Key
obj.key_emerald.name	Emerald Key
obj.key_ruby.name	Ruby Key
obj.key_ra.name	Ra Key
obj.key_master.name	Master Key
obj.gem_blue.name	Sapphire
obj.gem_orange.name	Topaz
obj.gem_green.name	Emerald
obj.coin_copper.name	Copper Coin
obj.coin_silver.name	Silver Coin
obj.coin_gold.name	Gold Coin
obj.coin_gor.name	Gor Coin
obj.coin_sar.name	Sar Coin
obj.waterskin.name	Waterskin
obj.waterskin_1.name	Water
obj.waterskin_2.name	Water
obj.waterskin_full.name	Water
obj.apple.name	Apple
obj.bread.name	Bread
obj.cheese.name	Cheese
obj.corn.name	Corn
obj.drumstick.name	Drumstick
obj.shank.name	Shank
obj.s_slice.name	Screamer Slice
obj.worm_round.name	Worm Round
obj.d_steak.name	Dragon Steak
obj.scroll.name	Scroll
obj.chest.name	Chest
obj.lockpicks.name	Lock Picks
obj.mirror_of_dawn.name	Mirror Of Dawn
obj.magnifier.name	Magnifier
obj.boulder.name	Boulder
obj.ashes.name	Ashes
obj.stick.name	Stick
obj.corbum.name	Corbum
obj.rabbits_foot.name	Rabbit'S Foot
It works perfectly well and as I have all the data in a google sheet it was easy to do this in bulk.

Cheers
Nick K.
User avatar
Automaton
Journeyman
Posts: 88
Joined: Sat Aug 28, 2004 10:49 am

Re: Nick's BIG DSB thread and Dungeon Re-Master

Post by Automaton »

Had to trawl the forum to find these - I was sure they existed, but the question is not answered fully in the thread a bit down below "Skip intro" so I thought I would post it again.

Add this to your startup.lua to skip the intro and the main screen to jump straight into game:

Code: Select all

function sys_game_intro()
   return true
end

function sys_game_start(savegames)
   return nil
end
Why?

I am/was/will use test dungeon from inside ESB, but sometimes (normally, well mostly, when I've done something wrong) the dungeon will error on startup and it totally breaks this function. Further attempts to test the dungeon from ESB will start DSB but it gets stuck on "Establishing connection with ESB" (If it helps the next line should be "initialising lua" if I am not mistaken).

I've searched for rogue processes and threads that have been made surrogate so I can terminate them, but I can't see anything that sticks out. Got no idea what dll's in com processes are still hanging about.

Image

Image

Cheers!
Nick K
User avatar
Automaton
Journeyman
Posts: 88
Joined: Sat Aug 28, 2004 10:49 am

Re: Nick's BIG DSB thread and Dungeon Re-Master

Post by Automaton »

I can't post a full list quite yet, but I am compiling them.

Corrections and adjustments to graphics.

I noticed that the wall grate was off by a few pixels at certain distances so corrected it.

I made some adjustments to side views of graphics, and this is to recenter them on the wall - to my way of thinking, they are placed to far back on the block of wall.

Probably, by the end, if I ever get there, this list will be extensive.

Do with it as you will, just posting them here so it's out there

Added to my graphics lua

Code: Select all

--Corrections

gfx.wallgrate_front.y_off = 112
gfx.wallgrate_front.mid_y_tweak = -3
gfx.wallgrate_side.y_off = 93

--Adjustments

gfx.keyhole_plain_side.x_off = -8
gfx.keyhole_cross_side.x_off = -8
gfx.keyhole_double_side.x_off = -8
gfx.keyhole_emerald_side.x_off = -8
gfx.keyhole_gold_side.x_off = -8
gfx.keyhole_master_side.x_off = -8
gfx.keyhole_onyx_side.x_off = -8
gfx.keyhole_ra_side.x_off = -8
gfx.keyhole_ruby_side.x_off = -8
gfx.keyhole_skeleton_side.x_off = -4
gfx.keyhole_solid_side.x_off = -8
gfx.keyhole_square_side.x_off = -8
gfx.keyhole_topaz_side.x_off = -8
gfx.keyhole_turquoise_side.x_off = -8
gfx.keyhole_winged_side.x_off = -8
gfx.coinslot_side.x_off = -8
gfx.gemhole_side.x_off = -8
gfx.eye_side.x_off = -8

gfx.slimedrain_side.mid_y_tweak = -4

gfx.fountain_lion_side.x_off = 16
gfx.fountain_medusa_side.x_off = 16
Cheers!
Nick K
User avatar
Gambit37
Should eat more pies
Posts: 13715
Joined: Wed May 31, 2000 1:57 pm
Location: Location, Location
Contact:

Re: Nick's BIG DSB thread and Dungeon Re-Master

Post by Gambit37 »

I like your new fountain, will be good to see it on a finished wall. One quick note about the shadow though: you've offset it to one side, but the light in DM is considered to come from the party, so shadows should be centred below, not off to one side.

Regarding your questions, I believe that #1 is already doable using a sound table (search the base files for how the player "oof" is handled). All the others are probably doable (except #5), but you'd likely need to override a lot of core functions which does become a bit of a pain. Sophia will be able to advise better.
User avatar
Sophia
Concise and Honest
Posts: 4240
Joined: Thu Sep 12, 2002 9:50 pm
Location: Nowhere in particular
Contact:

Re: Nick's BIG DSB thread and Dungeon Re-Master

Post by Sophia »

:arrow: Multiple random attack sounds are already doable. Just pass a table instead of a single sound. For example:

Code: Select all

-- Make mummies sound much more interesting
obj.mummy.attack_sound = { snd.monster_haa, snd.monster_squeak, snd.monster_roar }
:arrow: A spotting sound would need to be put into ai_monster_investigate and that isn't the easiest function to modify; I've tried to avoid situations where copy-pasting huge chunks of the base code are necessary. I'll add a better hook to the base code and get back to you.

:arrow: Playing a sound when the monster gets scared would cause a similar issue with method_causefear so the solution is probably similar. This will also not be terribly difficult for me to add to the base code, so I'll do that.

:arrow: Due to not wanting to have too many sound handles active at a time, there isn't an easy way to give monsters a persistent ambient sound. In addition, dsb_3dsound currently doesn't support moving the 3d location of a sound that is already playing (though the underlying API of course does) so this isn't the easiest thing.

:arrow: You can change the position of the viewport on the screen with dsb_viewport, so rapidly and randomly moving it around can create a shaking effect.

Code: Select all

-- This code will put the viewport back where it belongs
dsb_viewport(gui_info.viewport.x, gui_info.viewport.y)
The current effects are all pretty low level and end up pushing around a lot of pixels so there's unfortunately no way I could make them accessible via Lua and get any sort of acceptable performance. If DSB used a modern graphics architecture then of course I could just let you write your own in GLSL or something, but that unfortunately isn't possible right now.

:arrow: Definitely! You can rotate the party with dsb_party_place and rotate monsters with dsb_set_facedir. This may cause weirdness with rats and worms if they aren't centered, though.

:arrow: DSB integration with ESB is very new and experimental. Back before that existed, skipping the intro and the front door was the only way to test your dungeon quickly. As for why it sometimes hangs when stuff breaks, like I said, new and experimental. If you can give me steps to reproduce an error condition then I will investigate.
User avatar
Gambit37
Should eat more pies
Posts: 13715
Joined: Wed May 31, 2000 1:57 pm
Location: Location, Location
Contact:

Re: Nick's BIG DSB thread and Dungeon Re-Master

Post by Gambit37 »

You can change the position of the viewport on the screen with dsb_viewport, so rapidly and randomly moving it around can create a shaking effect.
Very creative, I'd never thought of that! DSB keeps on giving. :-)

Regarding the title case for object items, you might be able to avoid all that and instead override the text rendering parts of various functions and filter the output through one of Lua's string functions. I do something similar in my own project, but it depends how comfortable you are about maintaining modified base code (which becomes a bit annoying each time DSB is updated).
User avatar
Automaton
Journeyman
Posts: 88
Joined: Sat Aug 28, 2004 10:49 am

Re: Nick's BIG DSB thread and Dungeon Re-Master

Post by Automaton »

Thank you both!

This is very interesting and now I have a lot more testing to do on top of my lots of testing.

Thanks for the pointers on the lighting. I'll redo it and pay more attention.
User avatar
Automaton
Journeyman
Posts: 88
Joined: Sat Aug 28, 2004 10:49 am

Re: Nick's BIG DSB thread and Dungeon Re-Master

Post by Automaton »

Me again!

If I go quiet on the forums, I'm either A) Dead B)lost interest and buggered off to another game or C) Really busy getting on with work.

In this case C. So many GFX to change, and I keep doing them, and redoing them until I am happy with them.

Finally got a full base dungeon wall set I like. Tried 2 or 3, didn't work for me. This one though along with it's floor and ceiling is not bad. Its got the right graininess, flips well and I've gamma matched it fair close to the original DM.

I'm spending a fair bit of time on the wall ornaments to make use of alpha as much as possible and make them wall set agnostic (hopefully can be used on the upcoming walls I'l be doing.

Got 7 different coloured hazes going and icons in ESB to boot!

Was quite an experience getting a full wall set together, I had to tweak some of the coords on the doorframes as they didn't marry well with floor and ceiling.

@gambit - readjusted shadows on a host of things - it should all look like the source is emanating from the party now.

So, here is some stuff.

Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image

Cheers!
Nick
User avatar
MasterWuuf
Arch Master
Posts: 1071
Joined: Thu Sep 11, 2008 9:22 pm
Location: Way Down Here, Louisiana

Re: Nick's BIG DSB thread and Dungeon Re-Master

Post by MasterWuuf »

This is some great work, Automaton. I'm looking forward to seeing a finished product.

P.S. Any chance you'll consider adding a few 'new' modules to the DM world?
I don't know about others, but I would enjoy struggling through some new dungeon adventures, DM style.
"Wuuf's big brother"
User avatar
Gambit37
Should eat more pies
Posts: 13715
Joined: Wed May 31, 2000 1:57 pm
Location: Location, Location
Contact:

Re: Nick's BIG DSB thread and Dungeon Re-Master

Post by Gambit37 »

Nice work! :-D Yep, wall sets are hard to do. I've started and junked many over the years. Very tricky to make it all look convincing in original DM resolution, even harder when it's 2x. My only feedback on the walls and floor would be to fade them to black faster, they seem too bright all the way to the back.
User avatar
Automaton
Journeyman
Posts: 88
Joined: Sat Aug 28, 2004 10:49 am

Re: Nick's BIG DSB thread and Dungeon Re-Master

Post by Automaton »

Thank you!

@masterwuuf - I am considering adding new content, but its not for right now, I am busy in GFX and composing ambient tracks.

@Gambit - cheers, I'll re look and post my results.

Cheers!
Nick K
User avatar
Automaton
Journeyman
Posts: 88
Joined: Sat Aug 28, 2004 10:49 am

Re: Nick's BIG DSB thread and Dungeon Re-Master

Post by Automaton »

9/12 update

Thanks Gambit - I've now mapped light on the ceiling and floor to a half circle, perspective mapped onto the graphics as a screen overlay so it looks like this (btw walls not yet gamma corrected, thats a to do)

Image

Pits, rusted square grate and black iron (new from me) grates finished. I decided that all the floor grates will be housed over pits to be a bit more immersive and I'm toying with the idea of having a fake grate that is actually a pit (don't worry , Im planning a few graphical clues for that)

Unlike the original DM grates - mine have a front and side 0 frame, so you can still see them when you step on them.

I still have 4 designs of grate to do, with the circular one in the pipe line. (anything to add mmersion and flavour I say!)

Image
Image
Image
Image
Image
Image

Heres my ESB - Im adding new icons for objects as I go, you can se a black grate and all the hazes

Image

And here are my colour masks in gimp that help me position, place and tweak x,y positions in graphics.lua to make it all line up correctly

Image
Image
Image

Cheers
Nick K
User avatar
Automaton
Journeyman
Posts: 88
Joined: Sat Aug 28, 2004 10:49 am

Re: Nick's BIG DSB thread and Dungeon Re-Master

Post by Automaton »

@sophia - can we do floor objects at position 3 far? You see in the floor image above the 2 far purple squares on the left and right - I mean them.

Cheers
Nick K
User avatar
Automaton
Journeyman
Posts: 88
Joined: Sat Aug 28, 2004 10:49 am

Re: Nick's BIG DSB thread and Dungeon Re-Master

Post by Automaton »

@sophia again - When Im done, I plan on giving all this content up as "Nicks DSB construction set" including the changes to the editor and including all the xcf graphics templates. If you are interested in including it/hosting it, you are more than welcome, otherwise, I'll do it myself as a separate thing.

Cheers
Nick K
User avatar
Prince of Elves
Craftsman
Posts: 145
Joined: Sat May 09, 2020 6:58 pm

Re: Nick's BIG DSB thread and Dungeon Re-Master

Post by Prince of Elves »

Wow it's starting to look really cool. :) Very nice work there.
User avatar
Sophia
Concise and Honest
Posts: 4240
Joined: Thu Sep 12, 2002 9:50 pm
Location: Nowhere in particular
Contact:

Re: Nick's BIG DSB thread and Dungeon Re-Master

Post by Sophia »

No, the only thing rendered on those far left and right squares is the wall. Wallitems and flooritems are not drawn.
User avatar
Automaton
Journeyman
Posts: 88
Joined: Sat Aug 28, 2004 10:49 am

Re: Nick's BIG DSB thread and Dungeon Re-Master

Post by Automaton »

19-9 update

Mirror done

Image
Image

stone and "sneaky" doorbutton done

Image
Image

Round grate done

Image
Image

Various keyholes done

Image
Image
Image
Image
Image
Image
Image
Image

Wallpeg done

Image
Image

Wallfonts done. 1st is called eyvenir. 2nd is dale

Image
Image

Cheers!
Nick K.
User avatar
Prince of Elves
Craftsman
Posts: 145
Joined: Sat May 09, 2020 6:58 pm

Re: Nick's BIG DSB thread and Dungeon Re-Master

Post by Prince of Elves »

Whoa really nice again. :) I'll definitely play that one once it's finished. You seem to have a knack at making things look more modern while preserving the classic feel at the same time. Keep up the great work!

PS: The eyvenir is a bit hard to read, but looks cooler, at least to me.
User avatar
Automaton
Journeyman
Posts: 88
Joined: Sat Aug 28, 2004 10:49 am

Re: Nick's BIG DSB thread and Dungeon Re-Master

Post by Automaton »

Prince of Elves wrote: Sat Sep 19, 2020 8:27 pm PS: The eyvenir is a bit hard to read, but looks cooler, at least to me.
Eyvenir I chose specifically because A) it looks rune-ish B) Some of the letters, you have to stop and think about before you realise what it is C) It "Feels" DM-ish.

I do have several other fonts that are dungeon wall items, but not sure if I will use them.

I was toying with the idea of having dwarfish and elvish fonts and the player having to use clues to decode them.

Like I said before, I have sooo many ideas, we'll see how many I can implement.

Cheers!
Nick K.
User avatar
Gambit37
Should eat more pies
Posts: 13715
Joined: Wed May 31, 2000 1:57 pm
Location: Location, Location
Contact:

Re: Nick's BIG DSB thread and Dungeon Re-Master

Post by Gambit37 »

Some cool stuff there, nice work. I'm not a big fan of the new floor though, it doesn't really fit the walls and the repeating pattern is very obvious. Your previous floor is much better. I'd also shorten the shadow under the mirror: your shadow makes it appear that the mirror is a very deep box mounted on the wall. Since it's just a shallow wooden frame, the shadow should be equally shallow.
User avatar
Automaton
Journeyman
Posts: 88
Joined: Sat Aug 28, 2004 10:49 am

Re: Nick's BIG DSB thread and Dungeon Re-Master

Post by Automaton »

@Gambit - Thanks for the feedback. shadow under mirror shortened. The new floor is not "The floor" - As I am doing many wallsets, my floor and ceiling keep changing as I am testing them, but point taken!

Cheers!
Nick K.
User avatar
Automaton
Journeyman
Posts: 88
Joined: Sat Aug 28, 2004 10:49 am

Re: Nick's BIG DSB thread and Dungeon Re-Master

Post by Automaton »

Update 21-09

I have been pondering the monsters for some time as well as testing theories and ideas.

Should I remake the original DM graphics but better? If so how? Redraw them from hand? import the side and front into blender and recreate, retexture and relight them in 3D? All possible for me, I know photoshop, illustrator, gimp, inkscape, blender pretty well, but it's all about the time and effort.

There is also some "Cheats". I do plan on reusing (as well as updating) some of MONFULIR's work, but I believe most of his monster graphics came from the eye of the beholder series.

Textures and items I can grab random images off the net and do pretty cool stuff. A gold plaque texture here, a few layers of overlays there and a nice runic emblem in linear burn mode and voila a RA keyhole:

Image

Then there are a few loverly gems like this sheet, offered for free by the guy doing the LOGR graphics specifically for a DM remake:

Image

Also, there is the fab, sketchfab (https://sketchfab.com/lethanavir/collec ... eval-props) that has 1000's of free pretextured 3d models that you can preview and spin on the webpage (yes, I've already just grabbed screenshots and used them)

Image

Anyhow, back to monsters. What I don't want is blurred, linear, cubic, halo smeared shit. I'm looking for evolution of DM-ness.

After fiddling with A LOT of gimp modules, plugins and filters, I came up with this method and decided to use the SNES mobs (not all of them though, some of the original are better suited, but need more work). Here is the methodology, let me know what you think!

Original:

Image

Recoloured to my own taste:

Image

GMIC upscale x2 in ycbcr mode (This specific upscale works best on indexed images and is by far the best for upscaling pixelart and I've tried loads with loads of settings):

Image

Rogue black and white pixels tamed & corrections to details:

Image

A little bit of magic - GMIC add grain. this plug has several kodak presets and does really well at reinjecting pixel graininess into smoothed or low tone count images:

Image

Airbrushed shadows set to luma darken mode eventually:

Image

Shadow layer & art together:

Image

GMIC Antialiasing applied to just a 2 pixel border around the edge:

Image

Perspective shadow added (well 2 actually with bits deleted in between):

Image

In the dungeon:

Image

Screamer and mummy with the same method (The mummy I hue shifted to make the bandages look a bit dirty):

Image
Image

Cheers!
Nick K!
User avatar
Gambit37
Should eat more pies
Posts: 13715
Joined: Wed May 31, 2000 1:57 pm
Location: Location, Location
Contact:

Re: Nick's BIG DSB thread and Dungeon Re-Master

Post by Gambit37 »

Over the years tinkering with RTC and DSB, I did all the same visual experiments as you :D The only real conclusion I came to is that it doesn't really matter what methods you use, the key is to be make sure all your final graphics share a consistent style.

If you're able to use Blender, personally I'd go down that route -- do everything in 3D and render out everything with the same lighting and perspective. You'd have an amazing version of DM if you did that. But as you know, it takes a lot of talent and a looooooooong time. When I still had a lot of free time years ago, it was a project I really wanted to do, but as my free time got less and less, I knew I'd never be able to finish the entire thing using 3D renders, which is why I chose to stick with low-res 320x240 style images.
User avatar
Automaton
Journeyman
Posts: 88
Joined: Sat Aug 28, 2004 10:49 am

Re: Nick's BIG DSB thread and Dungeon Re-Master

Post by Automaton »

Update 26-09

Food glorious food!

Turnip and salami

Image

A Pumpkin in an alcove

Image

Mango, Green Apple, Corn and Red Apple

Image

Pumpernickel, Aged Cheese, Crusty Bread and Cheese

Image

Drumstick, Shank, Cured Ham and Dragon Steak

Image

Chest and Moneybox

Image

Moneybox inside

Image

Mushrooms!

I created 6, all called mushroom, 3 with the left graphic and 3 with the right graphic

For the left one, 1 type does nothing (small food value), 1 poisons you and the last randomly adjusts (temporarily) one of your stats by -10 to +10

For the right one, 1 does nothing, 1 sets your health, stamina and mana to full and the last sets your health, stamina and mana to a random of the same current bar.

All tested and working ;-)

Image

Rockpile

Image

Screamer (redux)

Image

Shrieker!

Image

1 Worm dead, 1 attacking

Image

Worm round, screamer and shrieker slices

Image

Cheers
Nick K.
User avatar
Automaton
Journeyman
Posts: 88
Joined: Sat Aug 28, 2004 10:49 am

Re: Nick's BIG DSB thread and Dungeon Re-Master

Post by Automaton »

Help! My brain is melting!

So I was redoing all the gfx for potions and I went off on a bit of a tangent

Well, here are some potions.

Image

Anyhow, I placed the Zo and Sar potions into the game, gave them spells to make them and gfx and whatnot and I tried to think of cool effects to give them. Aha, I thought, some heal over time sounds good. So I gave it to the Zo potion.

I basically set up a new condition called regen, took all the poisoning code, copied it and just used a + instead of a - when adding to health (still got to tweak the power of this).

The problem is that it calls dsb_damage_popup, which is working - it seems like you are taking 7 damage from the damage graphic overlay, but it's actually positive.

I created the GFX to do a heal_popup, found some code in render.lua that seems to be the what I want (albeit the inverse), but I can't seem to make it do what I want.

Code: Select all

-- Render the damage taken by a character
function sys_render_character_damage(bmp, ppos, who, is_dead, in_inv, damage_type, damage_val)
	local damage_image
	
	-- Graphics coordinates
	local xc = 0
	local yc = 0
	
	--Text coordinates
	local txc = 0
	local tyc = 0
	
	if (in_inv) then
		damage_image = gfx.damage_full
		xc = 14
		txc = 48
		tyc = 24
	else
		damage_image = gfx.damage_bar
		txc = 44
		tyc = 2
	end
	
	local dwidth = dsb_bitmap_width(damage_image)
	local dheight = math.floor(dsb_bitmap_height(damage_image) / 3)
	
	dsb_bitmap_draw(damage_image, bmp, 0, damage_type * dheight, xc, yc, dwidth, dheight, false)
	dsb_bitmap_textout(bmp, sys_font, damage_val, txc, tyc, CENTER, {255,255,255} )   
		
end
I understand how dsb_bitmap_draw and dsb_bitmap_textout work, but the destination value being passed "bmp" I can't work out how to make this be the affected character.

TLDR How do I make an equivalent "dsb_heal_popup"?

Extras!

I liked reversing the poison so much to make a regen, I added code for 2 new monster conditions - "disease" and "drain"

disease ticks slower than poison and has no heal available as yet and does:

Code: Select all

function disease_func(who, str)

	if (dsb_char_ppos(who) == nil) then
	    return str
	end
	
	local dis_dmg = math.floor(str/32)
	if (dis_dmg < 1) then dis_dmg = 1 end
	damage_char(who, STAMINA, dis_dmg, true)
	dsb_set_food(who, dsb_get_food(who) - (dis_dmg*2))
	dsb_set_water(who, dsb_get_water(who) - (dis_dmg*2))
	dsb_set_stat(who, STAT_VIT, dsb_get_stat(who, STAT_VIT) - (dis_dmg*2))
	
	if (str > 90) then
		str = str - 1
	end
	
	return(str-1)
end
drain is a mana drain(poison) and wis debuff

Code: Select all

function drained_func(who, str)

	if (dsb_char_ppos(who) == nil) then
	    return str
	end
	
	local drain_dmg = math.floor(str/32)
	if (drain_dmg < 1) then drain_dmg = 1 end
	damage_char(who, MANA, drain_dmg, true)
	dsb_set_stat(who, STAT_WIS, dsb_get_stat(who, STAT_WIS) - (drain_dmg*2))
	
	if (str > 90) then
		str = str - 1
	end
	
	return(str-1)
end
I also changed the UI to show whats what

Image

This kind of came about due to browsing through examples from monfulir, the test dungeon from Sophia and kaypy's libraries. The psychic demon example had mana damage and I saw from the damage bubble GFX that it was possible for stamina too and I wanted to make use of them.

Anyhow - if you can help - please do!
Nick K
User avatar
Automaton
Journeyman
Posts: 88
Joined: Sat Aug 28, 2004 10:49 am

Re: Nick's BIG DSB thread and Dungeon Re-Master

Post by Automaton »

Sophia,

I think I may be doing new conditions wrong (as in I recreated the table with all the old entries and added my own). I did see info on the wiki about dsb_add_condition and dsb_replace_condition and monfulir's examples seem to use them, but the wiki says "Deprecated" after both functions. Are they to be used or no?

what is the correct way to add new conditions?

Cheers!
Nick K
User avatar
Automaton
Journeyman
Posts: 88
Joined: Sat Aug 28, 2004 10:49 am

Re: Nick's BIG DSB thread and Dungeon Re-Master

Post by Automaton »

I've also expanded ESB's gfx (mostly to help me) for different things and monsters.

graphics for coins, food, weapons, gems and monsters

Image

Cheers
Nick K
kaypy
Artisan
Posts: 171
Joined: Sun Jan 19, 2014 7:11 am

Re: Nick's BIG DSB thread and Dungeon Re-Master

Post by kaypy »

If you are tweaking ESB, then one thing I found useful once you get to serious dungeon building is separately marking buttons and keyholes vs the other wall objects

Image

...

I think that sys_render_character_damage just prepares the image for rendering that actually occurs on the engine-side, so it wont help you actually place the image.
Friends don't let friends eat worm round
kaypy
Artisan
Posts: 171
Joined: Sun Jan 19, 2014 7:11 am

Re: Nick's BIG DSB thread and Dungeon Re-Master

Post by kaypy »

(edit window timed out)

rhelper.c\call_lua_damage_renderer would be where things happen. Which I think means its not something you are going to be able to do from the lua side. (You probably aren't going to be able to modify it, but you may want to grab the DSB c source just so you can check this sort of thing)
Friends don't let friends eat worm round
Post Reply