Giter Site home page Giter Site logo

jdoleary / spellmasons Goto Github PK

View Code? Open in Web Editor NEW
16.0 16.0 5.0 226.43 MB

Home Page: https://store.steampowered.com/app/1618380/Spellmasons/

License: Other

JavaScript 4.15% CSS 2.43% HTML 0.32% TypeScript 86.22% Dockerfile 0.01% Shell 0.13% PLSQL 6.73%
game game-development gamedev indiegame

spellmasons's People

Contributors

couls avatar dependabot[bot] avatar jdoleary avatar mattthewaz avatar soulmuncher avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

spellmasons's Issues

Support Modding

  • Units
  • Spells
  • Custom audio
  • Custom icons / unit animations
  • Mods that change config.js
  • Mod support in multiplayer
  • Mods persist after reboot (saved in settings)

Turn 'Target Kind' into a level 3 upgraded target similar

Target Kind is too OP right now. Since the engine now supports upgraded spells, let's make a 2nd version of Target Similar that is more powerful (targets an extra unit maybe) and then make Target Kind an upgrade to that 2nd target similar

Skillo — Today at 9:52 AM
Target similar is alright imo, the base 2 targets + 1 per cast makes it somewhat expensive on its own. And it has clear limitations which is targeting the same race. it starts to get out of control when you already managed to target a group of enemies and then use target similar, but thats also the case with connect, range aside.

it shines when you are trying to pick off someone really far away, since it works regardless of range.

Target kind just feels like a free map wide 60(!!!) mana targeting skill, which almost always guarantees you'll be able to reach everyone when paired with other green skills. Ironically it gets even more powerful with target similar, since you are already targeting 5 units so it will automatically make it 10, if possible. And its all map wide.

Maybe target kind could be the level 3 upgrade of target similar? In a similar way of how heal / slash scale, increasing mana cost and effectiveness.

Base target similar > improved target similar > target kind. Just a random idea

Arrow w/ increasing damage

jd

An arrow spell that does damage relative to how far away you are (the farther away, the more damage). See src/cards/burst.ts and src/cards/arrow.ts for reference.

Connect Targetting

Connect doesn't seem to be targeting the nearest unit in the chain correctly:

  • Connect is using a bounding box instead of a circle to determine range.
  • It doesn't always seem to prioritize the closest unit either.
  • Urns / DOODADS don't get highlighted
  • DOODADS should be added into the connect-sort

Idea: Targeting Disc

SoulMuncher:
Targetting Spell Idea: A disc that works similarly to arrow, but richochets off walls and enemies and applies spell effects to every enemy hit. More casts = more bounces. Other targetting spells would apply at each bounce or from each enemy hit. (How do you stop it from being super powerful?)

Dash + Burst

If you cast dash + burst on an enemy at medium distance, the prediction assumes you will complete the entire dash before casting burst, causing the unit to die, but in gameplay, you will often cast burst before dash finishes, causing you to deal less damage and leave the target alive.

Target Column should grow in *length* when stacked, not in width

Seems like no one likes or uses target column. As you suggested in your feedback, its the "go-to range extender" so stacking it should make it longer.

FYI, if a change requires a text change to a spell label, that has to get translated so add a TODO for me to update the translation

Local Hotseat Multi: Pick a spell bug

when one of us was dead, every turn it asked the dead player to pick a spell. This spell then went to the alive player. Is this intended or a bug of some sort? Local hotseat.

Reported by SolemnSundayBand on Reddit

Using Middle Mouse Button to move the camera while the cinematic is playing

Using Middle Mouse Button to move the camera while the cinematic is playing stops the cinematic camera but doesn't let you choose your spawn point until the cinematic would be done playing.

Expected behavior. If you cancel the cinematic camera with the middle mouse button, it should immediately allow you to place your player (and you'll see the ghost image of your character when you move the mouse)

AI Commands

Simple AI commands to selected units such as:

  • Hold Position
  • Attack
  • Follow Me

There also should be a way to multi select units when giving commands to make this easier. Probably a new menu that appears once you have ally npcs.
Regarding selecting, you could do:

  • all units of a given type
  • a single unit
  • all units

Capture soul shouldn't increase in health cost

For necromancer, capture soul is always like 90% of health instead of a static cost. This is unintuitive and de incentivizes upgrading health. Just make it a static large amount (38hp)

Improve sorting of spells in inventory

In inventory and in the codex, spells are sorted by mana, but this looks weird because there's no natural grouping (like with arrow spells for example). I'd expect all arrow spells to be together.

Sort spells first by type, then by mana cost so that all arrows show up next to each other for example (this will not apply to all spells but only to spells that are related)
image

Revisit how sacrifice stacks

SoulMuncher:
Multiple sacrifices increases your hp gained. I assume it's intentional but mentioning it since it's like... pretty darn powerful

I think sacrifice shouldn't take more health than the ally unit has, but maybe stacking it should have some kind of interesting effect?

Bone Golem

jd

A spell that consumes targeted corpse(s) to create a "bone golem". The more corpses that are consumed (targeted), the stronger / bigger the bone golem is. You can reuse the golem sprite (maybe tint him a different color for now (unit.image.sprite.tint = 0xff0000).

Summon Cards disappearing

RainbowLuck — Yesterday at 4:45 PM when u capture soul to set up a game and u
got kick out and you come back with no soul is realy frustrating '-'

timothycombs12 — Yesterday at 8:40 PM
found a glitch. target arrow + slash + capture soul targeting an ancient. it will refund the spell and not take hp from the player, but it will not give a spawnable ancient. i dont know if the last part is on purpose

Some players are reporting that their summon cards are disappearing. Probably a sync issue

MultiColorReplaceFilter Issue

BloodGolemSprite

I found some blood golem enemies using a broken sprite in Lava World when playing through the game normally in dev tab.

0/2 repro attempts, cause unknown.

Player's spawn ghost is hittable by arrows

Bobo Wontons — Today at 12:54 AM
unsure if this is a bug, but I was doing coop and set my "ghost" (the player when choosing spawn location) in front of my partner and they used arrow which hit my "ghost". It did not kill me, but I am wondering what if it did?

Enhance: Spell Suffocate

Suffocate should also decrease a units damage for every turn that it ticks.
(Damage must be restored to normal if suffocate is purified - reference spells like Blood Curse to see how this is done)

Bonus:
Interaction with liquid would be very cool, maybe suffocate ticks twice if unit is submerged.

Background

Suffocate is largely unused by players because:

Skillo — Today at 2:04 PM
Suffocate incentivizes you to stop damaging that enemy entirely, as it will be "wasted mana" since they'll die anyways
WHlTE RlDER — Today at 2:04 PM
precisely that.
With poison for example an enemy could take 2 ticks of it for 36 damage, and a basic slash would finish them off.

With suffocate you don't have any way to kill faster other than fast forward, or just killing them normally.

So it end up just not really doing anything the majority of the time.

Fix inactivity disconnect

Reported by SoulMuncher:
My teamate and I loaded into a level, and were talking about possible strategies before placing our characters. We were disconnected due to 1 minute inactivity (not a huge fan of this feature honestly). Anyway, when we reconnected, all of the minibosses had been converted to normal enemies. Priest minibosses that previously had 120 health (iirc) were down to 40 health, and appeared to be normal priest size. When selected, all of the data lined up with a basic priest, but their name was still Priest Miniboss. I should have taken a screenshot

I think what happened here is that the server tries to clean up games where all players have disconnected after a timeout (to see if they'll rejoin) but there must be a bug where it doesn't consider unspawned players as connected. This should be fixed so only games with actually no clients connected get cleaned up.
I've also noticed in the server-hub that games seem to stick around for WAY longer than I'm expecting them to with no clients.

Urns count towards level budget

Relevant code:
getEnemiesForAltitude2 in Underworld.ts
budget in Unit.ts

Expected:
Urns should not count against the level unit spawn budget or unit types chosen

Enemy that grows stronger

jd

An enemy that grows stronger with each passing turn. For this, you can reuse code from src\entity\units\golem.ts. (Make it grow bigger as it gets stronger too).

Enemy is primarily in the "idea" state at the moment, primarily for testing purposes

Target Injured

jd

A targeting spell that targets injured enemies. Add 3 at a time for each stack. Checkout src\cards\target_similar.ts for inspiration

Make Player Portals never disappear

SoulMuncher: Sometimes one player will instantly teleport to the next level upon completion, and the other player has to click end turn a couple times to make portals appear (already reported I think)

The easiest way to fix this issue is just to make the player portals not disappear when used by creating a new portal in the same spot when it triggers. (be careful not to cause an infinite loop)

Improve difficulty button UI

SoulMuncher:
In my experience, when making a multiplayer game, the difficulty buttons feel kind've buggy/unclear, and tend to mess with the UI in unexpected ways. It doesn't give good visual feedback and I'm not actually sure if they work or not. I tend to avoid clicking on any extra buttons when making a game now 😅

Arrow Collision

Multiple exploding arrows shot from [(targetting spells) + Exploding Arrow] will repeatedly collide with the first enemy, even after that enemy has been killed. This leads to incorrect predictions.

Mage Scholar

This will be complicated and shouldn't be pursued yet, but I like the idea so I'm storing it here for later.

SoulMuncher:
Targetting Spell Idea: Summon a mage scholar that attempts to cast the constructed spell at/on the nearest enemy every turn. The entity would be limited by mana regen. Multi-casting the targetting spell would give the mage more hp/mana regen/stamina/starting mana? (Sidenote: Would there be two versions, one that targets allies and one that targets enemies? Would it be determined by the first spell effect in the list?)

Jordan:
"Spells that last several turns " this is the vision for "auras" which have been on my list for a while but I haven't gotten to yet
Mage scholar idea is cool. I messed with a similar idea early on (trap was a spell that stored the rest of your spell in a pickup that would trigger later). I think it's worth revisiting. Balance might be hard, but maybe not if it costs mana for the scholar to cast then the balance is built in.

Decoy health scales with difficulty

Summon decoy calls unit.create(), which automatically calls unit.adjustUnitDifficulty(), raising its health. This may also affect player summons, but I haven't been able to test it due to no setDifficulty function.

Depending on your design choices, multiple solutions could be used. One option would be to have a createUnscaled() function that prevents a created unit's stats from being auto adjusted by difficulty. This could be used for all summons?
It could be a parameter/overload as well, but it's a pretty frequently used function so it may take some time to update everywhere that uses it.

Witch Class

Automatically receives Contaminate, curses cost 80% of usual cost

Balancing:
Increase radius of contaminate by 1.5x

Balance Suffocate and Poison to make them slightly more powerful

Dash to a pickup caused a desycn

sync: Syncing pickups Array(3)0: "0:false"1: "1:false"2: "2:false"length: 3[[Prototype]]: Array(0) current pickups: Array(4)0: "0:false"1: "1:false"2: "2:false"3: "3:false"length: 4[[Prototype]]: Array(0)
Underworld.ts:3779 sync: Remove excess pickups
Underworld.ts:639 Guard against infinite loop, unit tried to move but it was not its turn. Clearing stamina
Underworld.ts:881 Attempted to aquire queued pickup via timeout but pickup is undefined

Health/Mana bar predictions

The ui bar for health and mana doesn't always display the predicted outcome. Note: this becomes extra apparent with the new send-mana blessing.

Ex. Healing an enemy unit, Conserving enemy mana (Conserve seems particularly weird, as it causes the mana bar to flicker when prediction recalculates)

Blessing - Send Mana

jd

A blessing that sends mana to another unit. So the cost of the spell (lets say 20) will transfer that mana directly to the target(s)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.