Beiträge anzeigen

Diese Sektion erlaubt es ihnen alle Beiträge dieses Mitglieds zu sehen. Beachten sie, dass sie nur solche Beiträge sehen können, zu denen sie auch Zugriffsrechte haben.


Nachrichten - Finglan

Seiten: 1 2 [3] 4
31
Magieregeln / Re: Artefakt "Geh noch nicht"
« am: 14 Nov 2018, 17:38:32 »
Vielen Dank Seldom, dein Beitrag hilft mir schonmal weiter. Allerdings haben auch deine Lösung gewisse Einschränkungen:

1. Statt "Geh noch nicht" den Zauber "Todesschutz" verwenden.
Wenn man es als Zauberspeicher baut, damit der User nicht selber den Fokus aufbringen muss, muss diesem eine Probe (Akane Kunde) gegen 27 gelingen, also für einen nicht sehr gebildeten oder erfahrenen User durchaus eine Herausforderung. Außerdem müsste man das Artefakt dann ja vor jedem Kampf aktivieren und somit wäre ein sehr regelmäßiges Aufladen notwendig.
Wenn man es als verbesserter Strukturgeber baut, muss vom Benutzer K16V4 aufgebracht werden, was ebenfalls für nicht hochgradige Helden eine Herausforderung darstellen kann.


2. Ein kleiner Golem mit den Applikationen "Speicher", "Sprachausgabe" und "Zaubergolem" und der Verfügung "Komplexe Bedingung" ("Wenn ich durch eine Wunde ohnmächtig werden, wirke "Geh noch nicht" auf mich")
Eine sehr interessante Idee, die mir persönlich gut gefällt, allerdings habe ich noch keine Option im Golem Baukasten gefunden die GK unter 2 zu bekommen. Also wäre das ganze kein Amulet, was man um den Hals trägt (oder ähnliches), sondern ein irgendwie gearteter Golem, der einem dann hinterher läuft.

EDIT: Ich bin mir nicht sicher, aber ich glaube, es gibt auch eine Fähigkeit von den beseelten Artefakten, die eine ähnliche Wirkung erzielt.
Beseelte Artefakte haben, soweit ich es gelesen habe, keine anderen Fähigkeiten als höhere Artefakte, außer dass sie eine eigene Persönlichkeit haben/entwickeln.

32
Fehlersammlungen / Re: Die Magie: Sammlung von Fehlern
« am: 14 Nov 2018, 13:57:41 »
Baukasten zur Golemerschaffung
Seite 206: Schritt 2: Das Material
In der Box bei dem Material Holz wird als Schwapunkt "Empfindlich" aufgeführt, es gibt aber nur "Anfällig", "Fragil" oder "Feingliedrig" bei den Schwachpunkten auf Seite 201 f.

33
Magieregeln / Artefakt "Geh noch nicht"
« am: 14 Nov 2018, 12:48:22 »
Moin,

ich suche nach einer (regeltechnisch konformen) Lösung ein Artefakt hergestellt haben zu lassen mit folgenden Eigenschaften:
  • kanalisiert den Zauber "Geh noch nicht" für einen bestimmten Zeitraum (10 bis 30 min)
  • lädt sich selbst wieder auf (einmal pro Woche / einmal pro Monat / ...)
  • löst aus sobald der Träger den Zustand Sterbend 1 erreicht

Die ersten beiden Punkt sind kein Problem, allerdings hab ich bislang noch keine Lösung für die 3 Anforderung gefunden, da anscheinend jedes Auslösen von Artefakten eine bewusste Aktion benötigt, dieses aber hier offensichtlich nicht wirklich zielführend wäre. Gefühlt habe ich hier einfach ein grundlegenden Mechanismus überlesen, da nach meiner derzeitigen Regelauffassung auch keine magischen Fallen o.ä. möglich wären. Ich hoffe das ich einfach nur zu dumm bin  ;)

Vielen Dank schon mal für eure Hilfe und möge euch Morkai mit Wissen segnen!

34
Allgemeines / Re: Blubberlutsch
« am: 04 Aug 2018, 10:17:18 »
Nicht belegte Theorie:

Der Anteil von Fußball-Fans unter den Splittermond-Forum-Besuchern ist signifikant geringer als in der Bevölkerung. Da die Foren-Besucher durchaus Kontakt  zu anderen Menschen haben und in dieser Zeit nicht das Forum besuchen, gibt es i.d.R ca. 150 Besucher gleichzeitig im Forum. Während des DFB-Pokal-Finales allerdings standen die Fußballfans nicht für soziale Interaktionen abseits des Ballsportes zur Verfügung. Da nach getroffener Annahme unter den Foren-Besuchern weniger Fußballfans existieren und durch das Finale ein signifikanter Anteil an sozialer Interaktion die normal stattgefunden hätte, nicht statt fand,  stand den nicht Fußball-Fans mehr Zeit zur Verfügung die sich hier in der erhöhten Benutzung des Forums bemerkbar macht.

35
Moin,

vielen Dank @all (insbesondere die Orga) für eine (für mich und hoffentlich auch für alle anderen) entspanntes Wochenende mit viel Splittermond ;)

gr
Finglan

36
ich wurde gebeten, darauf hinzuweisen, daß albenkind falls gewünscht heute Steaks/Bratwürste/Krakauer bei ihrem lieblingsschlachter ein Dorf entfernt bestellen könnte. falls ja müßte sie wissen, wieviele (ungefähr) gewünscht werden.

Sollte es zum Grillen kommen, würde ich um 2 Steaks vom Schwein (vom Nacken oder so ) nehmen.

37
Spielrunde bei Ifram am Freitag
Abenteuer: Lehen ohne Lehnsherr - Ort: Arwingen, Blutpass
Kurzinfo: Der alte Lehnsherr ist nun schon eine ganze Weile verschwunden. Bevor das Lehen neu vergeben werden kann, sollen die Abenteurer nach dem Rechten sehen. Dabei bleibt es natürlich nicht...
Anmerkung: für den SL und 4-5 Splitterträger auf Heldengrad 1, Teilnahme nur mit vorheriger SC-Absprache im Forum

Jay, mehr Abenteur für die Start-Region, da schreibe ich gerade auch an einem. Würde gerne mit zum Blutpass kommen, was den Helden angeht bin ich flexibel. Mal sehen was die anderen so spielen wollen.

Ich hätte auch Interesse und würde gerne einen Char Richtung leichter Kämpfer (noch zu erstellen) spielen.

38
Kampfregeln / Re: Gegeneinander Unterstützen
« am: 01 Apr 2018, 11:33:57 »
Mir wurde aus dem Thread nicht klar, wie man die Schwierigkeit für die Unterstützer festlegt, da wir ja ein Henne Ei Problem haben und sich die Unterstützer gegenseitig Beeinflussen.

Nach reinem RAW funktioniert m.M.n. die Kombination aus unterstützenden Proben und vergleichenden Proben nicht, da da bei der Vergleichenden Probe erst die Unterstützenden würfeln und dann die Hauptverantwortliche. Bei einer vergleichenden Probe würfeln die beiden Kontrahenten gegeneinander, es existiert also keine Schwierigkeit im eigentlichen Sinne, ergo kann auch für RAW keine Schwierigkeit für Unterstützer festgelegt werden.

Ich sehe (theoretisch) 3,5 unterschiedliche Möglichkeiten dennoch unterstützende Vergleichsproben umzusetzen:

a) (nach Loki) Erst würfeln die beiden Hauptkontrahenten. Die Unterstützer würfeln nun gegen das Ergebnis - 5 des geg. Hauptkontrahenten.
b) die beiden Unterstützer würfeln eine vergleichende Probe gegeneinander. Danach würfeln die Hauptverantwortlichen gegeneinander, respektive der durch ihre Unterstützer erzeugen Boni und Mali.
c) Für die Unterstützungsprobe wird eine Schwierigkeit durch den Spielleiter vorgegeben, entweder pauschaul 15/20/oder so oder so etwas wie der Fertigkeitswert des Hauptgegners + 11

Bei a) sehe ich  das theoretische Problem, das die Ergebnisse der Unterstützer nachträglich die Schwierigkeit der Unterstützenden Probe des Gegners beeinflussen und somit eine vorher geschaffte Probe nicht mehr geschafft wäre

Beispiel:
Person A vs Person B, Person C unterstützt A, Person D unterstützt B

Person A hat eine 20 als Ergebnis
Person B hat eine 21 als Ergebnis
Person C gegen 16 (21-5) erreicht 20 -> geschafft, 1 Erfolgsgrad
Person D gegen 15 (20-5) erreicht 15 -> geschafft, keinen Erfolgsgrad

A und B erreichen beide 22, Gleichstand

Allerdings ändert sich ja theoretisch jetzt die Schwierigkeit der Vergleichsproben auf 17, womit Person D es nicht mehr geschafft hätte und somit A gewinnen würde

39
Wenn noch ein Bett frei ist, würde ich gerne Teilnehmen.

40
Ist das nicht automatisiert? Alle 6h werden automatisch die Foren geparsed und die Site aktualisiert?

41
Forenspiele / Re: Dschungel oder Stadt Outgame.
« am: 05 Mär 2018, 20:39:40 »
Moin,

ich werfe mal einen Händler in den Ring, der sich hauptsächlich mit An- und Verkauf Magischer Artefakte über Wasser hält und wenn es nötig sein sollte, auch weiß, wie man von der Bildfläche verschwindet. Ich würde seine Fähigkeiten in den Bereichen Magie, Heimlichkeiten und Sozial einordnen.

Wenn der Händler nicht passen sollte, hätte ich noch einen dragoreaischen Jäger, der sich durchaus seiner Haut zu wehren weiß. Zusammen mit seiner Tierischen Begleiterin fordert er gerne die gesamte Welt hinaus ;)

42
Ich kann um 10:50 oder 11:20 am Bahnhof Langen Flugsicherung sein

Gesendet von meinem S10 mit Tapatalk


43
Wenn man nach Mondstein Ring googlet, glaubt man die Inspiration für das Splittermond layout gefunden zu haben  ;)

44
Hab mir das mal gerade angeguckt und gefixt. Fehler war, das self.produkt_ergebnisse nie beschrieben wurde.

#!/usr/bin/python
# coding=utf-8

import urllib.request
import xlsxwriter
from statistics import StatisticsError, mean
from bs4 import BeautifulSoup
from collections import namedtuple, OrderedDict
from operator import attrgetter
from multiprocessing.dummy import Pool as ThreadPool

# Collection of Thread IDs in several categories
Produktthreads = OrderedDict([
    ('Spielhilfen', [
100244 ,
99039 ,
98315 ,
103886

]),
    ('Abenteuer', [
97188 ,
98757 ,
100657 ,
103971
])
])

# maintain anthologies separately
Anthologien = OrderedDict([
                           ('Cthulhu - Ars Mathematica',[
                                            102159, 102160, 102158]),
                           ('Cthulhu - Dreissig',[
                                            101501, 101503, 101504, 101502]),
                           ('Cthulhu - The Final Revelation',[
                                            97284, 97285, 97286, 97287]),
                           ('Cthulhu - Die Goldenen Hände Suc´naaths',[
                                            98758, 98757, 98759]),
                           ('Shadowrun - Licht aus der Asche',[
                                            96028, 96027, 96026])
                           ])

# Add anthologies to collection to avoid duplicates
for Anthologie in Anthologien:
    for threadid in Anthologien[Anthologie]:
        if threadid not in Produktthreads['Abenteuer']:
            Produktthreads['Abenteuer'].append(threadid)

# URL of a thread (%d will be thread_id)
baseurl = "https://www.tanelorn.net/index.php?topic=%d.0"

# Number of parallel threads (should be equal to number of CPU cores)
concurrent_parses = 4


def bbcode(tag, string, value=None):
    """Return a text(string) enclosed by the bbcode tags"""
    if value:
        return'[' + tag + '=' + value + ']' + string + '[/' + tag + ']'
    else:
        return'[' + tag + ']' + string + '[/' + tag + ']'


def bbcodeurl(urlstring, urlname):
    """Return an bbcode url format for given url and description"""
    return bbcode('url', urlname, urlstring)


def bbbold(text):
    """Return the text with a bbcode bold tag"""
    return bbcode(tag='b', string=text)


def bbtt(text):
    """Return the text with a bbcode tt tag"""
    return bbcode(tag='tt', string=text)


class bbtable():

    """creates the frame of a bbcode table"""

    def __init__(self, rows):
        """needs the rows as input for this table"""
        self.elements = rows

    def tablify(self, rows):
        """adds start and end tags for tables"""
        return str('[table]\r\n' + rows + '[/table]')

    def __str__(self):
        """prints table in bbcode format"""
        return(self.tablify(''.join(str(row) for row in self.elements)))


class tablerow(bbtable):

    """creates a bbcode table row with correct tags"""

    def cellify(self, rowfield):
        """encloses cells with correct tags"""
        return str('[td]' + str(rowfield) + '[/td]')

    def rowify(self, cells):
        """encloses rows with the correct tags"""
        return str('[tr]' + str(cells) + '[/tr]\r\n')

    def __str__(self):
        """adds cell and row tags to elements"""
        return(self.rowify(''.join(self.cellify(field) for field in self.elements)))


class tableheaderrow(tablerow):

    """adds a header row"""

    def cellify(self, rowfield):
        return str('[td]' + bbbold(rowfield) + bbtt('   ') + '[/td]')


class ProduktParser():

    def __init__(self, Produktthreads, Produkt = namedtuple('Produkt', 'name id url Stimmen Durchschnitt'), Produkte = [], Anthologien = [], baseurl = baseurl):
        """set base properties: URLs, thread ids, format"""
        self.produkt_ergebnisse = []
        self.anthologie_ergebnisse = []
        self.Produkt = Produkt
        self.Produkte = Produkte
        self.baseurl = baseurl
        self.Produktthreads = Produktthreads
        self.Anthologien = Anthologien
        self.bewertungen = set(
            [item for sublist in self.Produktthreads.values() for item in sublist])
        self.pool = ThreadPool(concurrent_parses)
        self.pool.map(self.getProdukt, self.bewertungen)
        self.getAnthologie()
        self.calculate_average()

    def calculate_average(self):
        for produkt in self.produkt_ergebnisse:
            produkt.calculate_mean()
 

    def getProdukt(self, threadid):
        """collect information for selected thread id"""
        url = self.baseurl % threadid
        page = urllib.request.urlopen(url)
        soup = BeautifulSoup(page.read(), "html.parser")
        Produktname = soup.find('title').string.split('/')[0].strip()
        polls = soup.find('dl', {'class': 'options'})
        options = polls.findAll('dt', {'class': 'middletext'})
        votes = polls.findAll('span', {'class': 'percentage'})       
        ergebnis = dict(zip([[int(s) for s in option.string.replace("(","").split() if s.isdigit()][0] for option in options], [int(vote.string.split(' ')[0]) for vote in votes]))
        einzelvotes = [
            item for sublist in [[k] * v for k, v in ergebnis.items()] for item in sublist]
        try:
            durchschnitt = str(round(mean(einzelvotes), 2))
            stimmen = len(einzelvotes)
        except (ZeroDivisionError, StatisticsError) as e:
            durchschnitt = '0 / No votes yet'
            stimmen = 0
        self.Produkte.append(
            self.Produkt(Produktname, threadid, url, stimmen, durchschnitt))
       
    def getAnthologie(self):
        for Anthologie in self.Anthologien:
            Anthologiedurchschnittagg = 0
            Anthologiestimmen = 0
            for Spielhilfe in self.Produkte:
                if Spielhilfe.id in self.Anthologien[Anthologie]:
                    if  Spielhilfe.Durchschnitt != '0 / No votes yet':
                        Anthologiestimmen += Spielhilfe.Stimmen 
                        Anthologiedurchschnittagg += Spielhilfe.Stimmen * float(Spielhilfe.Durchschnitt)
            if Anthologiestimmen == 0:
                Anthologiedurchschnitt = '0 / No votes yet'
            else:
                Anthologiedurchschnitt = str(round(Anthologiedurchschnittagg/Anthologiestimmen, 2))
                         
            self.Produkte.append(
                self.Produkt(Anthologie, 0, 0, Anthologiestimmen, Anthologiedurchschnitt))

    def get_produkt_ergebnisse(self, produkt_typ):

        result = [produkt for produkt in self.produkt_ergebnisse
                                 if produkt.thread_id in self.Produktthreads[produkt_typ]]
        return enumerate(sorted(result))

    def get_anthologie_ergebnisse(self):
        return enumerate(sorted(self.anthologie_ergebnisse))

    def get_all(self):
        return enumerate(sorted(self.Produkte))
                   

    def generateTable(self, bewertungsthreads):
        """"generate a table for the threads"""
        return bbtable([tableheaderrow(['Platz', 'Bewertung', 'Stimmen', 'Produkt'])]
                       + [tablerow([index + 1, element.Durchschnitt, element.Stimmen, bbcodeurl(element.url, element.name)])
                          for index, element in enumerate(sorted(bewertungsthreads, key=attrgetter('Durchschnitt'), reverse=True))])

    def printProdukte(self):
        """"print the table"""
        for key, value in self.Produktthreads.items():
            print('\r\n' + bbbold(key))
            print(self.generateTable(
                [Spielhilfe for Spielhilfe in self.Produkte if Spielhilfe.id in value]))
           
        print('\r\n' + bbbold("Anthologien"))
        print(self.generateTable(
            [Spielhilfe for Spielhilfe in self.Produkte if Spielhilfe.name in [Anthologie for Anthologie in Anthologien]]))

def generate_xlsx(produkte):
    # Create a workbook and add a worksheet.
    workbook = xlsxwriter.Workbook('Bewertungen.xlsx')
    worksheet = workbook.add_worksheet()

    # Start from the first cell. Rows and columns are zero indexed.
    row = 0
    col = 0

    # Iterate over the data and write it out row by row.
    for index, element in produkte:
        worksheet.write(row, col, index + 1)
        worksheet.write(row, col + 1, element.Durchschnitt)
        worksheet.write(row, col + 2, element.Stimmen)
        worksheet.write(row, col + 3, element.url)
        worksheet.write(row, col + 4, element.name)
        row += 1

    workbook.close()

if __name__ == '__main__':
    TanelornParser = ProduktParser(Produktthreads=Produktthreads, Anthologien=Anthologien)


    generate_xlsx(TanelornParser.get_all())

Ich glaube man könnte auch noch ein bisschen im Skript aufräumen ;)

45
Abenteuer und Kampagnen / Re: Schurkenanbenteuer
« am: 22 Feb 2018, 14:52:48 »
Wir haben eine Gruppe, die als Schurken gestartet sind und inzwischen ein wenig auf die "Heldenhafte" Seite rutschen, allerdings würden sie nicht vor einem Einbruch, Diebstahl oder ähnlichen zurück schrecken, auch nicht für den eigenen Profit.

Ich finde es wichtig, das man auch die moralischen Grenzen der Charaktere kennt und bestenfalls auch begründen kann, warum z.B. eine Entführung zu rechtfertigen ist und ein Mord nicht. Vll. gibt es ja auch ein übergeordnetes Ziel, welches der Charakter oder die Gruppe erreichen will und die Verbrechen sind "Mittel zum Zweck". Hier wäre wie natürlich Reichtum der offensichtlichste Grund, aber vll. ist es auch Gesellschaftliches Ansehen / Aufstieg der dem Charakter eigentlich wichtig ist, oder aber der Rachefeldzug gegen eine Person/Gesellschaft.

Eine andere, aber m.M.n. sehr spannende und vor allem als Einstieg in eine Kampagne geeignete Art, ist das unwissentliche Verbrechen. Die Heldengruppe wird mit einer Lügengeschichte geködert und führt so, im Glauben etwas zu mindestens nicht Verbotenes zu tun, ein Verbrechen oder Beihilfe zu einem aus. Hierbei kann sich dann eine persönliches Motiv der Wiedergutmachung oder Rache ergeben.

Seiten: 1 2 [3] 4