From 831f731db7b136ddc11e52fb4d16d530ee40cc3c Mon Sep 17 00:00:00 2001 From: Griatch Date: Tue, 12 Jul 2022 10:11:25 +0200 Subject: [PATCH] Building techdemo world --- .../tutorials/evadventure/build_techdemo.py | 59 +++++++++++++++++++ .../{world_batchfile.py => build_world.py} | 0 evennia/contrib/tutorials/evadventure/npcs.py | 34 +++++++++++ 3 files changed, 93 insertions(+) create mode 100644 evennia/contrib/tutorials/evadventure/build_techdemo.py rename evennia/contrib/tutorials/evadventure/{world_batchfile.py => build_world.py} (100%) create mode 100644 evennia/contrib/tutorials/evadventure/npcs.py diff --git a/evennia/contrib/tutorials/evadventure/build_techdemo.py b/evennia/contrib/tutorials/evadventure/build_techdemo.py new file mode 100644 index 0000000000..eeca33a738 --- /dev/null +++ b/evennia/contrib/tutorials/evadventure/build_techdemo.py @@ -0,0 +1,59 @@ +""" +Evadventure Techdemo area + +This is is used for testing specific features without any story or overall gameplay + +While this looks like a Python module, it is meant to run with the `batchcode` processor in-game: + + batchcode evadventure.build_techdemo + +This will step through the #CODE blocks of this file to build the tech demo. For help with using +the batchcode processor, see the +[processor documentation](https://www.evennia.com/docs/latest/Components/Batch-Code-Processor.html). + +You can also build/rebuild individiaul #CODE blocks in the `batchcode/interactive` mode. + +""" + +#HEADER + +# this is loaded at the top of every #CODE block + +from evennia import create_object, search_object +from evennia import DefaultExit +from evennia.contrib.tutorials import evadventure +from evennia.contrib.tutorials.evadventure.objects import ( + EvAdventureObject, EvAdventureRunestone, EvAdventureRunestone, EvAdventureConsumable, + EvAdventureObjectFiller) +from evennia.contrib.tutorials.evadventure.rooms import EvAdventureRoom +from evennia.contrib.tutorials.evadventure.combat_turnbasedA import EvAdventureCombatHandler +from evennia.contrib.tutorials.evadventure import npcs + +#CODE + +# Hub room evtechdemo#00 +# for other test areas to link back to. Connects in turn back to Limbo. + +limbo = search_object("Limbo") +hub_room = create_object(EvAdventureRoom, key="Techdemo Hub", aliases=("evtechdemo#00",), + attributes=[("desc", "Central hub for EvAdventure tech demo.")]) +create_object(DefaultExit, key="EvAdventure Techdemo", aliases=("techdemo",), + location=limbo, destination=hub_room) +create_object(DefaultExit, key="Back to Limbo", aliases=("limbo", "back"), + location=hub_room, destination=limbo) + + +#CODE + +# A combat room evtechdemo#01 +# with a static enemy + +combat_room = create_object(EvAdventureRoom, key="Combat Arena", aliases=("evtechdemo#01",)) +combat_room_enemy = create_object(npcs.EvadventureMob, key="Training Dummy") + +# link to/back to hub +hub_room = search_object("evtechdemo#00") +create_object(DefaultExit, key="Back to Hub", aliases=("back", "hub"), + location=combat_room, destination=hub_room) +create_object(DefaultExit, key="combat test", aliases=("combat"), + location=combat_room, destination=hub_room) diff --git a/evennia/contrib/tutorials/evadventure/world_batchfile.py b/evennia/contrib/tutorials/evadventure/build_world.py similarity index 100% rename from evennia/contrib/tutorials/evadventure/world_batchfile.py rename to evennia/contrib/tutorials/evadventure/build_world.py diff --git a/evennia/contrib/tutorials/evadventure/npcs.py b/evennia/contrib/tutorials/evadventure/npcs.py new file mode 100644 index 0000000000..008c8aa299 --- /dev/null +++ b/evennia/contrib/tutorials/evadventure/npcs.py @@ -0,0 +1,34 @@ +""" +EvAdventure NPCs. This includes both friends and enemies, only separated by their AI. + +""" + +from .characters import EvAdventureCharacter + +class EvAdventureNPC(EvAdventureCharacter): + """ + Base typeclass for NPCs. They have the features of a Character except + they have tooling for AI and for acting as quest-gives and shop-keepers. + + """ + + +class EvAdventureShopKeeper(EvAdventureNPC): + """ + ShopKeeper NPC. + + """ + + +class EvAdventureQuestGiver(EvAdventureNPC): + """ + An NPC that acts as a dispenser of quests. + + """ + + +class EvadventureMob(EvAdventureNPC): + """ + Mob (mobile) NPC; this is usually an enemy. + + """