diff --git a/Collections/Sorcerer Basics/font.alias b/Collections/Sorcerer Basics/font.alias index 3ec9481..12e1701 100644 --- a/Collections/Sorcerer Basics/font.alias +++ b/Collections/Sorcerer Basics/font.alias @@ -1,13 +1,29 @@ embed -{{cc="Sorcery Points"}} -{{n='\n'}} -{{ch=character()}} -{{mode, sl = '+' in "&*&" or 'create' in '&*&', [int(i) for i in '&*&0'.replace(' ','') if i.isdigit()][0]}} -{{h=(not sl) or "&*&".lower() in "help?"}} -{{cost,suffix=[2,3,5,6,7,0,0,0,0][sl-1],(["st","nd","rd"]+["th"]*6)[sl-1]}} -{{v=ch.cc_exists(cc) and (ch.get_cc(cc)>=cost if mode else ch.spellbook.get_slots(sl)) and (cost if mode else sl)}} + +cc="Sorcery Points" +n='\n' +ch=character() +mode, sl = '+' in "&*&" or 'create' in '&*&', [int(i) for i in '&*&0'.replace(' ','') if i.isdigit()][0] +ecc="Font Spell Level " + sl +h=(not sl) or "&*&".lower() in "help?" +cost,suffix=[2,3,5,6,7,0,0,0,0][sl-1],(["st","nd","rd"]+["th"]*6)[sl-1] +v=ch.cc_exists(cc) and (ch.get_cc(cc)>=cost if mode else ch.spellbook.get_slots(sl)) and (cost if mode else sl) +if v: + if mode: + ch.mod_cc(cc,-cost) + if (ch.spellbook.get_max_slots(sl) == ch.spellbook.get_slots(sl)): + ch.create_cc_nx(ecc,0,10,"long",dispType="bubble",reset_to=0,initial_value=0) + ch.mod_cc(ecc,+1) + else: + ch.spellbook.set_slots(sl,ch.spellbook.get_slots(sl)+1) + else: + ch.mod_cc(cc,+sl) + if (ch.cc_exists(ecc) and ch.get_cc(ecc)>=1): + ch.mod_cc(ecc,-1) + else: + ch.spellbook.use_slot(sl) + -title " {{f"invokes the Font of Magic - {['Spend','Create'][mode]} {sl}{suffix}-Level Slot" if v else "tries to invoke the Font of Magic"}}!" -{{((ch.mod_cc(cc,-cost),ch.spellbook.set_slots(sl,ch.spellbook.get_slots(sl)+1)) if mode else (ch.mod_cc(cc,+sl), ch.spellbook.use_slot(sl))) if v else ""}} -f "{{cc+(f" ({[f'+{sl}',f'-{cost}'][mode]})" if v else "")}}|{{ch.cc_str(cc) if ch.cc_exists(cc) else "*None*"}}" -f "{{f'''Spell Slots {f"({['-','+'][mode]}1)" if v else ""}|{ch.spellbook.slots_str(sl) if sl else n.join([ch.spellbook.slots_str(lvl) for lvl in range(1,10) if ch.spellbook.get_max_slots(lvl)])}'''}}" -desc "{{"**Create Spell Slot:** `!font [+/create] [slot-level]`\n**Create Sorcery Points:** `!font [-/spend] [slot-level]`" if h else "You do not have this ability." if not ch.cc_exists(cc) else [f"**Converting a Spell Slot to Sorcery Points.** As a bonus action on your turn, you can expend one spell slot and gain a number of sorcery points equal to the slot's level.\n\nSpending a {sl}{suffix} Level Slot, creating {sl} Sorcery Points.", f"**Creating Spell Slots.** You can transform unexpended sorcery points into one spell slot as a bonus action on your turn. The created spell slots vanish at the end of a long rest. You can create spell slots no higher in level than 5th.\n\nCreating a {sl}{suffix} Level Slot, spending {cost} Sorcery Points."][mode] if v else ["You do not have spell slots of the desired level.",["You do not have enough sorcery points for this.","You cannot create spell slots above 5th level."][sl>5]][mode]}}" diff --git a/Collections/Sorcerer Basics/scast.alias b/Collections/Sorcerer Basics/scast.alias index 1b2f47d..0ab21a3 100644 --- a/Collections/Sorcerer Basics/scast.alias +++ b/Collections/Sorcerer Basics/scast.alias @@ -22,6 +22,7 @@ if not spell_level: return f"""embed -title "Spell not found!" -desc "Sorry, `{spell_name}` could not be matched to a level in the database. If this is a valid spell (perhaps homebrew?) you can bypass this by specifying a level with `-l #`" """ + # Figure out which meta magics we're using meta_out = [] meta_cost = 0 @@ -73,5 +74,17 @@ Anything from `!help cast` # Otherwise, lets cast some magic, baby! else: - return f"""cast "{spell_name}" {' '.join([(f'"{i}"' if ' ' in i else i) for i in args[1:]])} """ + ' '.join(meta_out) + cc_out + # Check the spell slot levels and if necessary try to fill out with a font spell slot + a = argparse(args) + ignore = "" + ss_out = "" + if (character().spellbook.get_slots(spell_level) == 0 and not "i" in a): + ch,ecc=character(),"Font Spell Level " + spell_level + if (ch.cc_exists(ecc) and ch.cc(ecc).value > 0): + ch.mod_cc(ecc,-1) + ignore = " -i " + ss_out = f""" -f "**{ecc}** \n{character().cc_str(ecc)} (-1)" """ + + + return f"""cast "{spell_name}" {' '.join([(f'"{i}"' if ' ' in i else i) for i in args[1:]])} {ignore} """ + ' '.join(meta_out) + cc_out + ss_out