Browse Source

Add surge effects

master
Josh Gordon 2 years ago
parent
commit
63729ca5d9
  1. 11
      Characters/Grusson.txt
  2. 9
      Items/goat_counter.txt
  3. 41
      Monsters/zombie_crawler.txt
  4. 16
      Spells/silent_majority.txt
  5. 10
      app/action/Dungeon.h
  6. 2
      app/action/Makefile
  7. 1
      app/action/doc/dscript.aux
  8. 97
      app/action/doc/dscript.log
  9. BIN
      app/action/doc/dscript.pdf
  10. 81
      app/action/doc/dscript.tex
  11. 12
      app/new_content.txt
  12. 17
      app/routes.py
  13. 6
      app/surges.txt
  14. 20
      app/templates/surges.html

11
Characters/Grusson.txt

@ -13,7 +13,7 @@ Int: 10 (+0)
Wis: 20 (+5) (15 base, +1 race, +4 ASI)
Cha: 10 (+0)
HP: 86/86
HP: 43/86
AC: 17 (12 armor, 2 shield, 3 dex)
Prof: +5
Saves: Int (+6), Wis (+11)
@ -32,16 +32,19 @@ Fungal Infestation: (5/5)
Feats: Magic Initiate (Cleric; Command 1/1)
Equipment:
16,979 gold at farm
14,979 gold at farm
Robe of Stars (+1 saving throws, 6/6 5th level magic missiles, regens 1d6 per day) (Attuned)
Staff of the Woodlands (Attuned)
Staff of the Woodlands (Attuned) 10/10
Studded Leather Armor
Shield
50ft rope
Holy symbol (goat)
1x gem encrusted bowls
Dragon claw trophy
Whenever Grusson needs a small item, there is a 33% chance it is in his pocket.
Spells: [4] [4/4,3/3,3/3,3/3,2/2,1/1,1/1] (Prepared: 19)
Spells: [4] [3/4,2/3,2/3,2/3,1/2,0/1,0/1] (Prepared: 19)
0 Word of Radiance (Cleric)
0 Toll the Dead (Cleric)
0 Create Bonfire

9
Items/goat_counter.txt

@ -0,0 +1,9 @@
Goat Counter
------------
Rarity: Rare
Aura: Divination
The goat counter is a small mechanical counter that, when the command word is spoken, clicks around to the number of goats within two miles. The maximum value is 99, and it is susceptible to overflow (100 goats would read as 0).
It has AC 16 and 8 HP.

41
Monsters/zombie_crawler.txt

@ -0,0 +1,41 @@
Zombie Crawler
--------------
CR: uh
Size: Small
Type: Undead
Align: NE
AC: 16
HP: 20 (3d10+4)
Speed: 10ft, Climb 10ft
Str: 13
Dex: 14
Con: 14
Int: 3
Wis: 6
Cha: 5
Senses: Passive Perception 8
Immune: Poison
Descript {
A zombie without legs. It's arms are much larger than other zombies due to heavy use from crawling around. It can launch itself several feet in the air.
}
Actions {
Slam {
Kind Melee
Hit +6
Reach 5'
Damage 1d6+4 bludgeoning
}
Leap {
Special {
The zombie crawler pushes off the ground and leaps into the air. If it lands on a medium creature or smaller, it can restrain them (STR contest to break), and then make one slam attack.
}
}
}

16
Spells/silent_majority.txt

@ -0,0 +1,16 @@
Silent Majority
---------------
Kind: Necromancy 9
Time: 1 action
Range: 500 feet
Components: V,S,M (A dagger made out of black diamond, worth at least 20,000 gold)
Duration: Special, requires concentration
You stab yourself with the dagger, and begin to lose accelerating HP per round. You take one force damage on the first round, two on the second round, three on the third, etc. This damage does not affect your concentration.
The spirits of all humanoid creatures who have died within a 500 foot radius in the last 100 years appear as wraiths under your control. The wraiths dissipate when the spell ends, and their souls are lost forever. As a consequence, casting this spell twice in the same area does nothing.
The spell cannot be ended by the user's choice; it goes until the user drops below 0 HP, or dispel magic is cast on the user at the 9th level. This spell is unaffected by antimagic field.
The user can be healed to extend the spell's duration, but they must be careful not to be immediately killed by dropping too far into negative HP.

10
app/action/Dungeon.h

@ -0,0 +1,10 @@
#pragma once
#include <iostream>
#include <string>
class Dungeon {
private:
std::string name;
}

2
app/action/Makefile

@ -1,7 +1,7 @@
CC = clang++
FLAGS = -lSDL2 -lSDL2_image -lSDL2_gfx -lopencv_core -lopencv_highgui -lopencv_imgcodecs
EXEC = action
SRC = *.cpp #main.cpp Texture.cpp Character.cpp Timer.cpp Map.cpp NPC.cpp
SRC = *.cpp
all: $(SRC)
$(CC) $(FLAGS) -o $(EXEC) $(SRC)

1
app/action/doc/dscript.aux

@ -0,0 +1 @@
\relax

97
app/action/doc/dscript.log

@ -0,0 +1,97 @@
This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2019/dev/Debian) (preloaded format=pdflatex 2019.3.16) 27 JUL 2019 19:20
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
**dscript.tex
(./dscript.tex
LaTeX2e <2018-04-01> patch level 5
(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls
Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo
File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option)
)
\c@part=\count80
\c@section=\count81
\c@subsection=\count82
\c@subsubsection=\count83
\c@paragraph=\count84
\c@subparagraph=\count85
\c@figure=\count86
\c@table=\count87
\abovecaptionskip=\skip41
\belowcaptionskip=\skip42
\bibindent=\dimen102
)
(/usr/share/texlive/texmf-dist/tex/latex/mdwtools/syntax.sty
Package: syntax 1996/05/17 1.07 Syntax typesetting (MDW)
\grammarparsep=\skip43
\grammarindent=\dimen103
\sdstartspace=\skip44
\sdendspace=\skip45
\sdmidskip=\skip46
\sdtokskip=\skip47
\sdfinalskip=\skip48
\sdrulewidth=\dimen104
\sdcirclediam=\dimen105
\sdindent=\dimen106
) (./dscript.aux)
\openout1 = `dscript.aux'.
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 5.
LaTeX Font Info: ... okay on input line 5.
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 5.
LaTeX Font Info: ... okay on input line 5.
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 5.
LaTeX Font Info: ... okay on input line 5.
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 5.
LaTeX Font Info: ... okay on input line 5.
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 5.
LaTeX Font Info: ... okay on input line 5.
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 5.
LaTeX Font Info: ... okay on input line 5.
LaTeX Font Info: External font `cmex10' loaded for size
(Font) <7> on input line 18.
LaTeX Font Info: External font `cmex10' loaded for size
(Font) <5> on input line 18.
LaTeX Font Info: Try loading font information for OMS+cmtt on input line 20.
LaTeX Font Info: No file OMScmtt.fd. on input line 20.
LaTeX Font Warning: Font shape `OMS/cmtt/m/n' undefined
(Font) using `OMS/cmsy/m/n' instead
(Font) for symbol `textbraceleft' on input line 20.
LaTeX Font Info: Try loading font information for OMS+cmr on input line 23.
(/usr/share/texlive/texmf-dist/tex/latex/base/omscmr.fd
File: omscmr.fd 2014/09/29 v2.5h Standard LaTeX font definitions
)
LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <10> not available
(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 23.
[1
{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] [2] (./dscript.aux)
LaTeX Font Warning: Some font shapes were not available, defaults substituted.
)
Here is how much of TeX's memory you used:
389 strings out of 492641
4279 string characters out of 6131787
67559 words of memory out of 5000000
4351 multiletter control sequences out of 15000+600000
4154 words of font info for 16 fonts, out of 8000000 for 9000
1141 hyphenation exceptions out of 8191
24i,4n,19p,124b,245s stack positions out of 5000i,500n,10000p,200000b,80000s
</usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb></us
r/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb></usr/share
/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb></usr/share/texli
ve/texmf-dist/fonts/type1/public/amsfonts/cm/cmti10.pfb></usr/share/texlive/tex
mf-dist/fonts/type1/public/amsfonts/cm/cmtt10.pfb>
Output written on dscript.pdf (2 pages, 64081 bytes).
PDF statistics:
31 PDF objects out of 1000 (max. 8388607)
21 compressed objects within 1 object stream
0 named destinations out of 1000 (max. 500000)
1 words of extra memory for PDF output out of 10000 (max. 10000000)

BIN
app/action/doc/dscript.pdf

81
app/action/doc/dscript.tex

@ -0,0 +1,81 @@
\documentclass{article}
\usepackage{syntax}
\begin{document}
DungeonConf is a small language used to construct dungeons. The following features are included:
\begin{enumerate}
\item Dungeon dimensions and procgen method
\item What clusters of monsters appear and where
\item Traps
\item Locations (named tiles)
\end{enumerate}
\noindent The grammar is as follows:
\begin{grammar}
<dungeon> ::= <dungeon\_header> <body>
<dungeon\_header> ::= NAME `\{' <onl> <property\_list> <onl> `\}'
<onl> ::= `\\n'
\alt
<property\_list> ::= <property> `\\n' <property\_list>
\alt <property>
<property> ::= NAME `=' <value>
<value> ::= NAME
\alt NUM
\alt DICE
\alt COLOR /* used to specify a location on the generated map. \#000000 for random location. */
<body> ::= <content\_list>
\alt
<content\_list> ::= <content> `\\n' <content\_list>
\alt <content>
<content> ::= <monsters>
\alt <traps>
\alt <location>
<monsters> ::= `Monsters' `\{' <onl> <property\_list> <onl> `\}'
<traps> ::= `Trap' `\{' <onl> <property\_list> <onl> `\}'
<location> ::= `Location' `\{' <onl> <property\_list> <onl> `\}'
\end{grammar}
Though many language constructs are similar syntactically, the semantics are distinct.
The following are valid properties for each property\_list:
\begin{enumerate}
\item dungeon\_header
\begin{enumerate}
\item Width : $Int$
\item Height : $Int$
\item Procgen : $String \in \{Cave, Rooms\}$
\item Description : $String$
\end{enumerate}
\item monsters
\begin{enumerate}
\item Name : $String$
\item Number : $Dice$
\item Sprite : $String$
\item Size : $Int$
\item Color : $Color$
\end{enumerate}
\item location
\begin{enumerate}
\item Name : $String$
\item Width : $Int$
\item Height: $Int$
\item Sprite : $String$
\item Color : $Color$
\end{enumerate}
\end{enumerate}
\end{document}

12
app/new_content.txt

@ -1,10 +1,10 @@
Items/ackermannacles.txt
Items/drink_warmer.txt
Spells/waterbolt.txt
Items/die_of_augury.txt
Items/focus_of_the_blood_mage.txt
Items/focus_of_reference.txt
Spells/bigbys_hand.txt
Spells/depolymorph.txt
Spells/despell.txt
Spells/enrage.txt
Spells/wingbind.txt
Items/fractal_sponge.txt
Items/manite.txt
Spells/stasis.txt
Items/ring_of_enlargement_reduction.txt
Items/ring_of_greater_enlargment_reduction.txt

17
app/routes.py

@ -27,7 +27,7 @@ app = Flask(__name__)
def index():
featureType = choice(["Item","Place","Spell"])
item = choice(get_items("../"+featureType+"s/*"))
links = [("marches","West Marches"),("dungeon","Dungeon Generator"),("about","About"),("interp","Interp")]
links = [("marches","West Marches"),("dungeon","Dungeon Generator"),("about","About"),("interp","Interp"),("surges","Magic Surge Effects")]
return render_template('index.html',featureType=featureType,featureText=item,links=links,new=get_new_items())
@ -229,5 +229,20 @@ def interproll():
price = lower*(1-0.01*roll) + upper*(0.01*roll)
return render_template('interp.html',price=price,roll=roll)
@app.route("/surges")
def surges():
with open("surges.txt") as f:
lines = f.readlines()
surges = list(zip(map(lambda t: t+1,range(len(lines))),lines))
return render_template('surges.html',surges=surges)
@app.route("/surges/random")
def random_surge():
with open("surges.txt") as f:
lines = f.readlines()
s = choice(lines)
return render_template('surges.html',surges=[(0,s)])
if __name__ == "__main__":
app.run()

6
app/surges.txt

@ -0,0 +1,6 @@
Your hair doubles in length
You shed dim light out to 20ft for the next week
Flowers grow where you walk
You learn how to speak infernal
A random item from D&D archive appears in your hand
The world's climate changes by +4 degrees celsius

20
app/templates/surges.html

@ -0,0 +1,20 @@
{% extends "base.html" %}
{% block content %}
<h2>Magic Surge Effects</h2>
<ul class="headlist special">
<li><a href="/surges/random">Random</a></li>
</ul>
<table>
{% for (index,surge) in surges %}
<tr>
<th class="topalign">
{{index}}
</th>
<td class="monospace">
{{surge}}
</td>
</tr>
{% endfor %}
</table>
<a class="topLink" href="#">Scroll to Top</a>
{% endblock %}
Loading…
Cancel
Save