DoomRL > Releases

Tourist mod: walk through Hell like a Boss! + Infinity module

(1/3) > >>

Equality:
Tourist:
Well, from one side that is a sample how to create items. I create:

- pistol, auto-rechargable, alt-fire, alt-reload
- knife, alt-fire
- super-medpack.
- armor and boots.

From other side it is a sample how reuse any of special levels that exist in game. All names are present in code.

And for non-modders that is a good training area, where you can visit ANY special level at any difficulty. Faster gain experience, and find a lot of uniques. Of course you have at start "cheaters" equipment - but why not unequip that? Well. Anyway it is a debug-mode episode.

Pistol alt-reload teleports you to stairs, if you want. May be in future I write "massacre" for knife alt-fire ...

last changes:
- make a proper color for armor. No, it is not intended black - I want a cybernetic armor with white glow. Now it looks properly.
- added Map Scanner - thank to shark20061
- added missed Deimos Lab. Now ALL special levels here.
- added big ammo and ammopacks. Can be bugged, not tested.
- knife converted to blade, with Dragonslayer sprite and Whirlwind alt-fire.
- added proper level names (i.e. Phobos-Deimos-Hell)

finally,
- added MASSACRE for blade alt-attack. Kill all living (and non-living) beings on level. Except you.

Infinity
A long-long way. Until level number not reached max_integer or something like that. So, if you want, you can descend to level 2 000 000 000. Or at least to 32000.
Make that past discussion about Infinity Dungeon at ADoM...

Shinji_Ikari_9th:
just finished playing tourist and found myself with more then i knew what to do with.  well done.

edit- just played the newest version of tourest, and i must say that i loved the map scanner.

yaflhdztioxo:
Heh, well it was bound to happen eventually, and I suspect this mod is a GREAT resource for other modders who want to learn now to work with the engine.

I wonder if we should put this on the portal?

Evilpotatoe:
Just tried it. Great, indeed.

The super medkit is a good idea. Would you mind adding super nuke, non-homing phase device, portable invulnerability globe, zerk pack, envirosuit, light amp, & tracking map ? :)

Btw, I found myself short of ammo several times, why does this stupid blaster need reload ? it feels so weak :(

shark20061:

--- Quote from: Equality on April 11, 2013, 02:37 ---Pistol alt-reload teleports you to stairs, if you want. May be in future I write "massacre" for knife alt-fire ...

--- End quote ---


--- Code: ---OnAltFire = function (self, firer)
  if not firer.flags[BF_INV] then
    firer.flags[BF_INV] = true
    level:nuke()
    firer.flags[BF_INV] = false
  else
    level:nuke()
  end
  return true
end,

--- End code ---



--- Quote from: Evilpotatoe on April 11, 2013, 17:15 ---Just tried it. Great, indeed.

The super medkit is a good idea. Would you mind adding super nuke, non-homing phase device, portable invulnerability globe, zerk pack, envirosuit, light amp, & tracking map ? :)

Btw, I found myself short of ammo several times, why does this stupid blaster need reload ? it feels so weak :(

--- End quote ---

Since we have a testing thing going on, I'll supply my favorite debug items:

PDA - Full map visibility

--- Code: ---register_item "automap" {
name = "PDA",
weight = 0,
sprite = items.map.sprite,
type = ITEMTYPE_PACK,
desc = "A handheld device that contains a built in scanner system.  Just activate it to reveal the level.",
OnUseCheck = function (self, user)
level.light[LFEXPLORED] = true
level.flags[LF_ITEMSVISIBLE] = true
level.flags[LF_BEINGSVISIBLE] = true
return false
end,
OnUse = function (self, user)
--Nothing!
end,
}

player.inv:add("automap")

--- End code ---

The all powerful Mining Laser:

--- Code: ---register_item "mininglaser" {
name = "Mining Laser",
weight = 0,
sprite = items.plasma.sprite,
type = ITEMTYPE_RANGED,
desc = "Fires a highly focused laser that burns through anything in its path.",
damage = "7d6",
damagetype = DAMAGE_PLASMA,
psprite = items.plasma.psprite,
group = "weapon-plasma",
ammo_id = "cell",
fire = 9,
acc = 12,
ammomax = 50,
altfire = ALT_SCRIPT,
altfirename = "Rapid Mode",
altreload = RELOAD_NONE,
missile = {
sprite = SPRITE_FIREBALL,
color = GREEN,
delay = 20,
miss_base = 0,
miss_dist = 0,
flags = {MF_RAY, MF_HARD},
sound_id = "plasma",
},
flags = {IF_NOAMMO, IF_FARHIT, IF_UNSEENHIT, IF_DESTRUCTIVE},
OnFire = function (self, firer)
self.shots = 0
return true
end,
OnAltFire = function (self, firer)
self.shots = 4
return true
end,
OnFired = function (self, firer)
self.shots = 0
end,
}

player.inv:add("mininglaser")

--- End code ---

Portable Invulnerability (Toggle):

--- Code: ---register_item "inv_toggle" {
name = "Super Shield",
weight = 0,
sprite = items.smed.sprite,
type = ITEMTYPE_PACK,
desc = "Enables and Disables a super shield, making you invulnerable or removing invulnerability.",
OnUseCheck = function (self, user)
if (player.flags[BF_INV] == false) then
ui.msg("The shield is now ON!")
player.flags[BF_INV] = true
else
ui.msg("The shield is now OFF!")
player.flags[BF_INV] = false
end
return false
end,
OnUse = function (self, user)
-- HA! Nothing here, all happens in use check to make it not use any time!
end
}

player.inv:add(inv_toggle)

--- End code ---

Super Nuke:

--- Code: ---register_item "supernuke" {
name = "Nuke Detonator",
weight = 0,
sprite = items.nuke.sprite,
type = ITEMTYPE_PACK,
desc = "When you just feel the need to blow up every last monster on the level...",
OnUseCheck = function (self, user)
ui.msg("You push the nuke button!")
player.nuketime = 100
return false
end,
OnUse = function (self, user)
--Nothing again!
end
}

player.inv:add("supernuke")

--- End code ---

The rest will be exercises for the readers!  (The basic framework for the rest is either in the module or in this post.)

Navigation

[0] Message Index

[#] Next page

Go to full version