Browse Source

Add current items and flask app

konis
Joshua-Gordon 3 years ago
commit
f5ec875d8e
  1. 2
      .gitignore
  2. 13
      Items/antitracking_boots
  3. 17
      Items/dimension_strider_boots
  4. 12
      Items/lord's_edge
  5. 15
      Items/portal_gun
  6. 22
      Items/scroll_of_misfortune
  7. 21
      Items/sword_of_pay_to_win
  8. 14
      Items/unseen_glasses
  9. 16
      Places/plane_of_china
  10. BIN
      app/__pycache__/items.cpython-36.pyc
  11. 15
      app/items.py
  12. 22
      app/routes.py
  13. 18
      app/templates/index.html
  14. 19
      app/templates/items.html
  15. 48
      app/templates/style.css

2
.gitignore

@ -0,0 +1,2 @@
Stoneshot

13
Items/antitracking_boots

@ -0,0 +1,13 @@
Antitracking Boots
------------------
This item looks like an ordinary pair of fur boots.
Whenever someone walks in these boots, tracks appear in the opposite direction they walk.
If the user walks a path given by the vector function <r(t),\Theta(t)> in 2D polar coordinates, then the tracks follow <-r(t),\Theta(t)> with the polar axis at the point where the boots were equipped.
AC 10 and 15 HP
When destroyed, all existent tracks reappear where the user had walked.
Per detect magic, there is a minor aura of illusion on the boots.

17
Items/dimension_strider_boots

@ -0,0 +1,17 @@
Dimension Strider Boots
-----------------------
This item appears to be a tall pair of black leather boots with blue streaks throughout the leather.
As a move action, you may shift into 2 or 4 dimensions. Returning to 3 dimensions is also a move action.
While 2 dimensional, you are infinitely thin and can cut through any damage resistance, as well as score critical hits for every succesful attack
If, however, you are hit by a 3 dimensional being while 2 dimensional, you take a critical hit and return to 3 dimensions.
While 4 dimensional, you can pass through walls and floors, as well as dodge attacks from lower dimensional sources.
Attacking while 4 dimensional is complicated, as you can not open your eyes in this state.
What? You thought you were alone in the 4th dimension? If your eyes are opened, you take 4d8 psychic damage per turn.
They have AC 12 and 15 HP each.
When destroyed, the current wearer, if any, is returned to 3 dimensions and is affected by plane shift to a random plane selected by the DM.
Per Detect Magic, there is a moderate conjuration aura surrounding the boots.

12
Items/lord's_edge

@ -0,0 +1,12 @@
Lord's Edge
-----------
The Lord's Edge is a hand-crafted katana with steel folded over 1000 times and quenched in a japanese waterfall. Best used with the Fedora of Tipping.
The Lord's Edge is a medium sized one handed weapon that does 1d8 damage.
When it's ability is actived by the command phrase "Nothing personnel, kid", the wielder can use dimension door as a free action as long as they teleport behind a creature. This ability has a 1 minute cooldown.
An attack made directly after using this ability crits on 18-20.
The Lord's Edge has AC and HP of a longsword
Per detect magic, there is an aura of conjuration on the hilt, and an aura of loser on the edge

15
Items/portal_gun

@ -0,0 +1,15 @@
Portal Gun
----------
The portal gun is a small bolt action rifle with wood grain siding and stock. Ammunition for the gun is regular bullets.
When fired, the projectile can close any portal that it hits. Magical portals, such as those created by Gate or Demiplane, immediately disappear.
Mundane portals like doors and windows close as best as they can (a broken window won't close properly, but the frame will shut).
If fired at a teleporting enemy as a reaction, you can close their portal partway through teleportation and cut them in half.
If you are holding the portal gun when it is destroyed, your hands close permanently as a curse.
The gun has AC 10 and 20 HP
The gun has a moderate aura of conjuration

22
Items/scroll_of_misfortune

@ -0,0 +1,22 @@
Scroll of Misfortune
--------------------
This scroll is 24" wide, and made of yellowed parchment with tears around the edges.
Unfurled, it contains an incantation that, when read either by accident or by someone with the intent to hurt you, causes an unfortunate event to occur to you.
The event is decided at the time of the scroll's creation, and may or may not take place depending on the specifics of the event (A kraken cannot attack you in the desert)
Severity of events are limited by the type of Scroll of Misfortune. Several types are known to exists:
Scroll of Lesser Misfortune:
Events fitting to lesser misfortune include stubbing your toe, dropping whatever item you're holding, taking disadvantage on a roll, falling to the ground, breaking a delicate object you are handling, etc.
A Scroll of Lesser Misfortune is easy to produce; you must place the parchment under a mirror worth at least 25gp, write the incantation, and break the mirror over the scroll.
Scroll of Misfortune:
Events fitting to standard misfortune include hitting yourself with your own weapon, fizzling a spell you are casting, being attacked by wild animals, taking a natural 1 on a check, or forgetting something important.
Producing a Scroll of Misfortune is moderately challenging; you must kill a black cat as it walks over the parchment, and write the incantation in it's blood. Following this, you must spill a salt shaker containing magical salts worth at least 100gp over the scroll.
Scroll of Great Misfortune:
Events fitting to great misfortune include being attacked by a boss monster, getting struck by lightning, taking a natural 1 on any roll, sudden retrograde amnesia, rolling on the magic surge table, etc.
Producing a Scroll of Great Misfortune is a very difficult task; you need to carry the parchment with the written incantation and walk under a ladder 43 times. Each time you walk under the ladder, there is a 5% chance you suffer any effect of lesser misfortune, a 1% chance you suffer an effect of standard misfortune, and an ironic .2% chance of suffering great misfortune itself. Because of this reason, these scrolls tend to be sold for 1000gp as hazard pay.
The scroll has AC 10 and 4 HP. When destroyed, it's effect happens on whoever or whatever destroyed it.
Per detect magic, the scroll has either a mild, standard, or intense aura of enchantment.

21
Items/sword_of_pay_to_win

@ -0,0 +1,21 @@
Sword of Pay to Win
-------------------
This item appears to be a standard steel longsword, but it has a slot in the hilt, large enough to fit all common denominations of currency.
The base damage of the sword is 1d4. However, if a coin is inserted, for the next hour, the damage changes according to the denomination of the coin:
- 1cp grants 1d6 damage;
- 1sp grants 1d8 damage, and the weapon gains the "silvered" status;
- 1gp grants 1d10 damage;
- 1pp grants 1d12 damage, and the weapon becomes +2 magical additionally.
The slot closes after you insert the coin, opening again when the hour has expired. Inserting the coin is a free action.
If a counterfeit coin is inserted, the sword remains at 1d4 damage, and additionally causes disadvantage with attacks made by it (it actively avoids hitting other creatures). This effect lasts for the usual hour. The slot remains open, but the counterfeit coin is gone.
If you look closely into the reflections on the blade in bright light, you can make out faint advertisements for local services.
Although precautions are taken to avoid such tracking, the coins ultimately end up in the lair of an unscrupulous, avaricious gnome who mass-produces these swords and sends them widely to market. The money is vaulted away, but the gnome promises to any visiting creatures (in Common) deals and steals of various sorts, like the ability to purchase experience points, or a Certificate of Prerequisite to take a feat or multiclass. The gnome also has a proficient INT skill for determining the class of a creature on sight, if any, and may tailor their offers to that class.
The AC and HP are as for a typical longsword.
Per Detect Magic, the sword's hilt has a faint aura of conjuration and divination. No other part of the sword has an aura.

14
Items/unseen_glasses

@ -0,0 +1,14 @@
Unseen Glasses
--------------
Unseen Glasses are a rare artifact of the ancient deep gnomes. Their appearance differs from user to user, but they tend to be glasses shaped. Tend to be.
A pair of Unseen Glasses must be custom made for a user (or wished into existence). If their user ever views them, they lose all magical power and become regular glasses. They are generally stored in opaque, sealed containers.
When equipped, namely put over the user's (closed) eyes, the user becomes invisible, intangible, and absolutely immune to all divination magic. Furthermore, the user gains the ability to see through the eyes of any creature within 300ft.
The user must be very careful that nothing nearby can see invisible objects; that might create the awkward situation of both losing an expensive magic item and also getting caught eyejacking.
The most dangerous part of using Unseen Glasses is near creatures not of this world. You may not be prepared to see what they see.
The glasses have AC 10 and 5 HP.
Per detect magic, the glasses have a strong aura of divination and transmutation.

16
Places/plane_of_china

@ -0,0 +1,16 @@
Elemental Plane of China
------------------------
The Elemental Plane of China takes the form of endless high rises with cameras everywhere.
It is not known if the ground exists, or if the drop off of a building goes down forever.
Many a factory worker attempts to find out.
The atmosphere is entirely smog.
While in the Elemental Plane of China, you take 2d12 poison damage every 6 seconds, as well as 2d4 psychic damage from surveillance.
Upon entrance to the plane, all items on you that reference the Tiananmen Square Massacre, Winnie the Pooh, or the LGBT community get confiscated and are destroyed.
The plane is inhabited by Chinese spies and factory workers, although the spies do not make themselves shown.
Inhabitants are human, and speak Chinese.
Spy sattelites fly overhead, watching other planes.
While in the Elemental Plane of China, items are sold for approximately half as much, but are more frequently damaged or cursed.

BIN
app/__pycache__/items.cpython-36.pyc

15
app/items.py

@ -0,0 +1,15 @@
import glob
def get_items():
items_dir = "../Items/*"
items_list = []
for fname in glob.glob(items_dir):
print(fname)
f = open(fname,'r')
lines = f.read().split('\n')
header = lines[0]
tail = '\n'.join(lines[2:])
items_list.append((header,tail))
return items_list

22
app/routes.py

@ -0,0 +1,22 @@
from flask import Flask
from flask import render_template
from flask import request
from items import get_items
app = Flask(__name__)
@app.route('/style.css')
def style():
return render_template('style.css')
@app.route('/')
def index():
return render_template('index.html')
@app.route('/items')
def items():
return render_template('items.html',items=get_items())
if __name__ == "__main__":
app.run()

18
app/templates/index.html

@ -0,0 +1,18 @@
<html>
<head>
<meta charset='utf-8'>
<link rel="stylesheet" type="text/css" href="style.css">
<link href="https://fonts.googleapis.com/css?family=IBM+Plex+Mono|IBM+Plex+Sans|IBM+Plex+Sans+Condensed" rel="stylesheet">
<title>COSI D&D Archive</title>
</head>
<body class="content">
<h1>COSI D&D Archive</h1>
<nav>
<ul>
<li><a href="/items">Items</a></li>
<li>Places</li>
<li>Characters</li>
</ul>
</nav>
</body>
</html>

19
app/templates/items.html

@ -0,0 +1,19 @@
<html>
<head>
<meta charset='utf-8'>
<link rel="stylesheet" type="text/css" href="style.css">
<link href="https://fonts.googleapis.com/css?family=IBM+Plex+Mono|IBM+Plex+Sans|IBM+Plex+Sans+Condensed" rel="stylesheet">
<title>Items - COSI D&D Archive</title>
</head>
<body class="content">
<h1><a href="/">COSI D&D Archive</a></h1>
<table>
{% for (name,item) in items %}
<tr>
<td> {{name}} </td>
<td> {{item}} </td>
</tr>
{% endfor %}
</table>
</body>
</html>

48
app/templates/style.css

@ -0,0 +1,48 @@
html {
background: #222;
background-size: cover;
background-repeat: no-repeat;
color: white;
font-family: 'IBM Plex Sans', sans-serif;
font-size: 24px;
}
h1 {
font-variant: small-caps;
font-size: 60px;
}
h2 {
font-size: 48px;
}
h3 {
font-size: 32px;
}
.header {
text-align: center;
font-size: 32px;
}
a, a.visited {
color: #66F;
text-decoration: none;
}
.content {
display: block;
margin: auto;
width: 50%;
padding: 10px;
text-align: center;
}
.indent {
margin-left: 10px;
}
table,th,td {
border: 1px solid white;
}
Loading…
Cancel
Save