Commit graph

113 commits

Author SHA1 Message Date
Andrei Alexeyev
ba1dc70619
player: freeze effective power during surge (experimental) 2022-10-03 20:53:22 +02:00
Andrei Alexeyev
3c7283f1c7
player: refactor power handling
Separate concepts of "stored" and "effective" power.
2022-10-03 20:53:22 +02:00
Andrei Alexeyev
8d2ee76710
replace include guards with #pragma once 2021-08-31 23:34:46 +03:00
Andrei Alexeyev
173c8c3cc6
replay: general refactor
* Split replay.c into multiple files under replay/; improve logical
  separation of replay-related code.
* Separate replay playback state from data.
* Get rid of global static replay struct and avoid unnecessary replay
  copying.
* Replay playback and recording are now independent and may occur
  simultaneously, although this functionality is not yet exposed. This
  enables replay "re-recording" while synthesizing new desync check
  events, possibly at a different rate from the original replay.
* Rate of recorded desync check events can now be controlled with the
  TAISEI_REPLAY_DESYNC_CHECK_FREQUENCY environment variable. The default
  value is 300 as before.
* Probably other stuff I forgot about.
2021-06-16 01:43:10 +03:00
Andrei Alexeyev
4b623059d1
player: clean up timestamp-based states
Negative "recovery" is gone: bomb i-frames and recovery i-frames are
now decoupled from each other. Added brief comments explaining what
the timestamps are for.
2021-06-04 03:33:11 +03:00
Andrei Alexeyev
a7eb246664
Purge some dead code 2020-04-28 00:13:15 +03:00
Alice D
56e64498a6
Player Statistics (#219) 2020-04-26 22:27:13 +03:00
Andrei Alexeyev
83d4197e86
Remove Player.lastmovedir
This is only relevant for YoumuA, so track it there
2020-04-23 00:35:06 +03:00
Andrei Alexeyev
d4fb6ab5bd
player: remove "focus" property and "focus_circle"
focus_circle is replaced with a custom PlayerIndicators entity
(responsible for drawing the focus hitbox/cross and powersurge bar)
2020-04-23 00:17:40 +03:00
Andrei Alexeyev
42956c2ace
Remove Player.slaves 2020-04-22 22:37:04 +03:00
Andrei Alexeyev
e16e2184a3
Refactor entity system (#214)
* Smarter generic entity macros

The list of "core" entities is now defined in one macro, and hardcoded
_Generic dispatch tables are eliminated

* Get rid of "custom" entities

All entities are now "first-class". The list of known entity types has
been moved to known_entities.h. The system no longer needs to know the
definition of all entity structs.

* Refactor guts of ENT_BOX/ENT_UNBOX

Made the functions inline, Box::ent is now a proper pointer type (but
please don't use it directly), ENT_UNBOX returns NULL if the box is
"empty" (references NULL entity)

* Merge TASK_BIND_UNBOXED with TASK_BIND

* s/YoumuMyon/YoumuAMyon for consistency
2020-04-17 10:18:53 +03:00
Andrei Alexeyev
45a4283225
use custom ents for Reimu; cleanup Marisa; etc. 2020-04-06 04:34:55 +03:00
Andrei Alexeyev
431237f0f2
Coroutinize MarisaA (#206) 2020-04-01 23:08:40 +03:00
Andrei Alexeyev
b6a6496c39
Coroutinize ReimuB (#205) 2020-03-25 08:52:18 +02:00
Andrei Alexeyev
01e7ea8a33
Coroutinize ReimuA (#199) 2020-03-13 22:54:07 +02:00
Andrei Alexeyev
80b1026d08
Don't redefine standard complex macro; use a new cmplx typedef
This also introduces `float32`, `float64`, and `real` typedefs to be
used in place of `float` and `double` later. `real` is for game code and
other places where we don't particularly care about the precision and
format of the underlying type, and is currently defined to `double`.
`float32` and `float64` should replace `float` and `double` respectively
2019-11-22 05:38:48 +02:00
Andrei Alexeyev
5a23fb95fc
make upkeep script preserve existing copyrights 2019-08-03 20:44:22 +03:00
Andrei Alexeyev
cf1ab225cb
basic support for portrait faces; make charselect menu more fun 2019-07-08 03:51:15 +03:00
Andrei Alexeyev
3055901998
update my email 2019-07-03 21:00:56 +03:00
Andrei Alexeyev
c2cd91463c
New character art by Afensorm + other visual tweaks (#170)
* implement player spellcard declarations on bomb

* stagedraw: move "bottom text" to a separate (higher) layer

* update boss spell declaration effect

* import afensorm's character portrait art

* improve dialog visuals

* acknowledge afensorm in credits and COPYING

* 'alphamap' functionality; effects for wriggle and youmu portraits

* update afens art

* add cirno alphamap

* dialog: draw active speaker above other other

* charselect: use r_draw_sprite
2019-07-03 20:50:43 +03:00
Andrei Alexeyev
129ada315d
powersurge: reduce maximum negative charge drain rate
can't drain faster than positive anymore (once again)
2019-04-08 06:41:29 +03:00
Andrei Alexeyev
488ff43f85
add optional floating scoring text 2019-04-07 01:55:13 +03:00
Andrei Alexeyev
ebee4eb00f
Remove the bomb cancellation system
Bombs may now persist into a boss spellcard without failing it, if they
were used before the spellcard was declared.
2019-04-01 00:12:45 +03:00
Andrei Alexeyev
df3427d09a
powersurge: rebalance charge/bonus gain in favor of neg. charge maintenance 2019-03-28 17:56:06 +02:00
Andrei Alexeyev
68111e6ccb
improve the Post Death Experience (and code) 2019-03-05 13:50:29 +02:00
Andrei Alexeyev
8fc5abb78a
The Powersurge game mechanic and scoring system (#159) 2019-02-22 01:56:03 +02:00
Andrei Alexeyev
4159ea1249
'upkeep' target for maintenance tasks; back to include guards; happy new year! 2019-01-23 22:10:43 +02:00
Andrei Alexeyev
49d0d54a2e
Lots of disorganized (mostly) visual overhaul (#156)
* WIP some projectile effects

* fix segfault

* Laser smoothing and glow via post-processing blur magic

TODO: make it optional

* fix memory corruption

* fix memory corruption for realsies now

* fix color_get_hsl for out-of-range colors

* some more bullet flare tweaks

* some lame clear effect workarounds

* spawn bullet flares after frame 0; looks better and fixes some problems

* New baryon explosion; fix petal_explosion; leanify everything

* Add missing bullet flare sprite, rebuild main atlas

* improve batching efficiency with bullet spawn flares

* forgot git add

* Group projectiles/particles by shader where possible

* Another take on baryon explosion; make fg framebuffers 16bit

* WIP some settings for toasters

* remove stupid debug log

* microoptimization that probably does nothing anyway

* somewhat more intuitive quality settings

* Whitelist more particles (MarisaB is on hold)

* Whitelist (and fix) some more stage6 particles (mostly ToE)

* Add a spell name background

* Experimental radial healthbar for bosses

* healthbar tweaks

* thiccer healthbars in response to feedback

* remove healthbar survival timer; just fade out on survivals

* Add linear healthbars option; WIP other boss HUD tweaks

* Use the proper spell card name format

* New font and some random garbage to go along with it

* Generate static font outlines for use in text shaders

* Use outlines in overlay text shader

* Complete boss HUD/healthbar fading logic

* fix boss timer limit

* stage5 bombs explosion effect

* split PFLAG_NOSPAWNZOOM into PFLAG_NOSPAWNFLARE and PFLAG_NOSPAWNFADE;

introduce PFLAG_NOSPAWNEFFECTS which disables both (it's just the two
values OR'd together)

simplify vampiric vapor bullet spawning effect

* Remove spawn fade-in from super-fast stage5 fairy projectiles (limiters)

* lower particle density in v.vapor in minimal mode

* graze effect tweaks

* fix text shortening, tweak replay menu layout

* stupid debug spam

* revisit grazing effects again

* dumb debug spam again

* improve boss attack timer

* overlay effect for boss deaths (similar to the player one)

* spice up spellcard declaration (HUD)

* don't spawn boss death overlay if fleed

* modify Exo2 font to use tabular figures

* adjust replay menu for the font change

* draw timer & power with standard font (phasing out the numbers font)

* WIP new HUD; random fixes/tweaks

* hud: move difficulty indicator

* hud: move debug stuff around

* preloads, mostly

* fix youmuA batching conflict

* shitty workaround for the shitty screenshake shit

* remove extraspell lag by stopping to draw stagebg sooner

which is possible because extra spells have a different spellcard_intro timing. Fun fact of the day: the duration of spellcard_intro is always ATTACK_START_DELAY_EXTRA even for normal spells!

* new stain particle

*  i disabled background rendering…

* "batch" marisa_b masterspark draws

* remove these once a new atlas is generated

* make toe quick again

* hopefully fix all occurences of changed stain and ScaleFade behavior

* tweaking reimu_a and toe boson launch effects

* make lhc fast again

* softer involnerability effect

* fix stage 1 snow on the water bug (and improve performance)

translated the time to the future a bit because it only seemed to be an issue for small time values

* remove unnecessary spawnflare from toe

* tone down extra spell start effect

* experimental ReimuB gap shader optimization

* fix python3 shebangs

* generate simple blur shaders w/ hardcoded kernels

* New loading screen

* lasers: fix incorrect draw hook registration

* add webp support for atlas generator

* Use ImageMagick for atlas composition (adds 16-bit support)

* Atlas maintenance

* make the vampiric vapor bullets less prone to invisibility

* Revert a few particles to the quadratic fade curve

* experimental baryon effect

* improve baryon sprites

* disable the baryon effect on minimal postprocessing setting
2019-01-05 00:59:39 +02:00
Andrei Alexeyev
364a92eb4a
Finally fix skip_background_anim and player init in spellstages 2018-10-23 06:26:22 +03:00
Andrei Alexeyev
3615b95f13
Add Reimu Hakurei as a playable character (#106)
* Reimu (#101)

* add the reimu

* Add Reimu story

* account for various blunders

* add reimu dialog picture

* Reimu: WIP yin-yang orbs

* reimu: fix up indents

* Reimu: swap the shotmode names to match the kanji order in her Japanese name

* Reimu: compatibility with the latest system

* WIP ReimuA crap

* ReimuA homing trails

* more ReimuA stuff

* more ReimuA adjustments + enhanced DPS stats

* Reimu: stubs for new player animation sequences

* Reimu: occupy the 0th character slot

* Reimu: tweak needle sprite

* Reimu: buff movement speed to better match Touhou

* Reimu: fixup for the recent projectile changes

* ReimuA: make homing shots a bit smaller; give them custom effect on collision

* Reimu: add intermediate frames; move some loose sprites to the atlas

* Reimu: fix compile errors

* replace DBL_MAX by INFINITY

* Don’t draw reimu orbs twice

fixes #127

* add new reimu dialog pic

* ReimuA adjustments (mostly homing); it's still OP

* wip ReimuB gaps

* still not sure where i'm going with these gaps

* meh

* Reimu: premultiplied alpha fixups after rebase

* reimuB shot pattern with basic power scaling (not balanced at all)

* reimuB: some lame-ass particle effects

* ReimuB bomb effect prototype

* reimuA bomb prototype

* fix reimu shots for the new damage system

* Reimu: use the new player_is_bomb_active() function, add placeholder BG for ReimuB

* some reimuB bomb projectiles

* ReimuB bomb bg and some framebuffer utils required to support it.

Might reuse this at least in part for ReimuA unless we come up with
something better.

* hack to fix ReimuB bomb fade; refactoring needed

* reimuA damaging bombs

* fix ub

* prevent nan when reimuA bombs without enemies present

* add a bomb_bg to reimuA

* ...

* various fantasy seal tweaks

* Reimu: placeholder bomb sounds; slight fantasy seal buff

* fix null pointer dereference

* Reimu "balance" adjustments; minor fixes

* putting bandaids over gunshot wounds

* Add aoe damage and bullet cancel to ReimuB's bomb

* more exorcism porn

* make reimu bomb bg runes better visible on dark backgrounds

* More ReimuA shot changes
2018-08-11 22:13:48 +03:00
Andrei Alexeyev
12a9acbc71
Add more functions to query player state properly (is alive, is vulnerable, is bombing)
There are some minor changes to the logic to keep things consistent.
2018-07-31 10:07:34 +03:00
Andrei Alexeyev
cb792621b2
delegate handling of bomb logic to playermodes 2018-07-30 16:14:51 +03:00
Andrei Alexeyev
e9ef77abee
basic entity damage generalization 2018-07-30 10:04:39 +03:00
Andrei Alexeyev
83a8961df6
use "anchored" lists for most game objects
these have a pointer to the last element, thus appending is fast
2018-06-01 21:40:18 +03:00
Andrei Alexeyev
f3616f3496
enhanced DPS stats (backport from reimu branch) 2018-05-20 04:42:17 +03:00
Andrei Alexeyev
ef37b22d6d
Improve (totally rewrite) projectile collision detection and graze mechanics (#122)
* improve (totally rewrite) projectile collision detection and graze mechanics

* fix lineseg_circle_intersect as per lao's suggestion

* adjust hit"boxes"

* fix false hits on inductive resonanse (bad lerp)

* initialize projectile prevpos on spawn

* pp_basic_init_projectile: always override the projectile's sprite when setting the prototype
2018-05-13 16:08:58 +03:00
Andrei Alexeyev
45da133768
player property system; adjust character speeds and PoC 2018-05-02 09:08:32 +03:00
Andrei Alexeyev
8ef5ffd32c
Flexible draw order; entity "base class" for all game objects 2018-04-15 09:43:11 +03:00
Andrei Alexeyev
59cf8f6300
Rendering system rewrite, tons of refactoring, optimizations, and other cool stuff (#116) 2018-04-12 17:08:48 +03:00
Andrei Alexeyev
2925cf5dd6
adjustable power in practice mode. closes #107 2018-01-20 17:55:31 +02:00
Andrei Alexeyev
f4ef527528
fix replays yet again 2018-01-09 20:49:57 +02:00
Andrei Alexeyev
6178bcdb3a
start with max lives and standard bombs in practice mode 2018-01-06 23:18:11 +02:00
Andrei Alexeyev
728709befa
make Ricci field grazeable again, but with a milder effect and reduced score (PFLAG_GRAZESPAM) 2018-01-06 11:44:27 +02:00
Andrei Alexeyev
485c9a8ed6
Happy New Year! 2018-01-04 19:14:31 +02:00
Andrei Alexeyev
29acd5f58a meson: intel intrinsics, various improvements 2017-12-21 03:58:54 +01:00
Andrei Alexeyev
068b484394
Fix crashes with replay saving disabled
We always record the replay now, even if "save replays" is set to
"never". In addition to fixing the crash bugs, changing this setting
mid-game also works correctly now.
2017-12-18 18:34:10 +02:00
laochailan
28b4ec4449
wip youmu a bomb 2017-12-10 08:53:47 +01:00
Andrei Alexeyev
8b6d1eafc8
YoumuA changes 2017-12-06 01:34:14 +02:00
Andrei Alexeyev
5d4c750168
made min. distance from plr to viewport a constant 2017-11-11 23:44:54 +02:00
Andrei Alexeyev
e978d97614
add a "shoot by default" setting 2017-10-31 11:48:30 +02:00