Giter Site home page Giter Site logo

ozkriff / zemeroth Goto Github PK

View Code? Open in Web Editor NEW
1.4K 25.0 86.0 2.3 MB

😠⚔️😈 A minimalistic 2D turn-based tactical game in Rust

Home Page: https://ozkriff.itch.io/zemeroth

License: Apache License 2.0

Rust 99.70% Shell 0.13% HTML 0.17%
rust game strategy tactics turn-based hexagonal android opengl 2d travis-ci

zemeroth's People

Stargazers

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

Watchers

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

zemeroth's Issues

Throwable bombs

You throw it and it explodes on the next turn.

Like in Hoplite:

image

Re-enable master branch protection

I've disabled it temporary as there're some issues with appveyour:

https://ci.appveyor.com/project/ozkriff/zemeroth/build/1.0.38/job/kw4dcp03nm0s4k9l

Build started
git clone -q --branch=i31_pop_up_messages https://github.com/ozkriff/zemeroth.git C:\projects\zemeroth
git checkout -qf 217100d56a99da820817f50097f5a9ba23eef5ab
Restoring build cache
Cache 'C:\Users\appveyor\.cargo\registry' - Restored
Running Install scripts
set PATH=C:\msys64\usr\bin;%PATH%
set PATH=C:\msys64\mingw32\bin;%PATH%
if "%TARGET%" == "x86_64-pc-windows-gnu" set PATH=C:\msys64\mingw64\bin;%PATH%
curl -sSf -o rustup-init.exe https://win.rustup.rs
rustup-init.exe --default-host %TARGET% --default-toolchain %CHANNEL% -y
info: syncing channel updates for 'stable-i686-pc-windows-gnu'
error: could not download file from 'https://static.rust-lang.org/dist/channel-rust-stable.toml.sha256' to 'C:\Users\appveyor\.rustup\tmp\hxecc8aukt3fbk29_file'
info: caused by: error during download
info: caused by: [35] SSL connect error (schannel: next InitializeSecurityContext failed: Unknown error (0x80092013) - The revocation function was unable to check revocation because the revocation server was offline.)
Command exited with code 1

and travis (on OSX beta and nightly):

https://travis-ci.org/ozkriff/zemeroth/jobs/255141489

häte: `pub(super)` -> `pub(crate)`

$ git grep "pub(super"
hate/src/context.rs:    pub(super) fn new(tx: Sender<screen::Command>, settings: Settings) -> Context {
hate/src/context.rs:    pub(super) fn load_texture<P: AsRef<Path>>(&mut self, path: P) -> Texture {
hate/src/context.rs:    pub(super) fn clear(&mut self) {
hate/src/context.rs:    pub(super) fn should_close(&self) -> bool {
hate/src/context.rs:    pub(super) fn flush(&mut self) {
hate/src/context.rs:    pub(super) fn font(&self) -> &rusttype::Font {
hate/src/context.rs:    pub(super) fn factory_mut(&mut self) -> &mut gfx_device_gl::Factory {
hate/src/context.rs:    pub(super) fn draw_mesh(&mut self, mvp: Matrix4<f32>, mesh: &Mesh) {

Willpower and Exertion

I'm not sure if the game really needs them (xcom-like abilities with cooldowns should emulate this to some extent), but it would be cool to build a prototype.

How they work in BS (from https://bannersaga.gamepedia.com/Stats):

Willpower (WP or WIL) measures a unit's capacity to perform actions that exceed its regular 'potential'. These actions can be any of the following:

  • Move longer (more tiles) than normal.
  • Inflict more damage to an enemy unit's Strength or Armor.
  • Use an active ability.

Points of Willpower are spent (depleted) when a unit executes these feats; when Willpower runs out, then the unit can only perform normal movement and attacks.

The amount of Willpower that can be spent for extra movement & damage cannot exceed the unit's Exertion stat (see below). The amount of Willpower spent on an active ability is only limited by the Rank of the ability that the unit desires to use; abilities of Rank-{1,2,3} cost {1,2,3}WP, respectively.

Willpower can be replenished by the following means:

  • Resting: If a unit terminates his turn without neither moving, nor attacking, nor using an active ability, then 1WP is restored.
  • Using 'The Horn', a magic item fueled by knocking-out enemies.
  • Specific abilities, granted by allies or equipped items (only for the single-player game).

The maximum Willpower of a unit cannot be exceed by these mechanisms.

Exertion (EX or EXE) dictates how much Willpower a unit can use to boost its movement or attack damage. You are not restricted to using Willpower for only one action per turn, since you can only boost each action for as much Willpower you have left and what your Exertion allows.

Example: A unit with 2 Exertion and 4 Willpower can (a) move 2 extra tiles, and/or (b) do 2 more damage.

Exertion is a fixed stat that can only be temporarily decreased (zeroed) by a specific active ability in the single-player game. Note that units are normally allowed to have zero Exertion, meaning that they can only use their Willpower for active abilities. Currently available Exertion range is between 0-3.

Strength

Right now units die from a single hit. That won't work well with reactions attacks (#25). Units should have some kind of basic hit points.

I'm going to call this unit's property "Strength" - like in Banner Saga, as I'm going to use this later as an attack modifier too.

image

Block user input during command execution

I think that there're should be a timer in Game screen for this. The blocking time should be based on modified visualize_events output:

pub fn visualize_event(
   state: &State,
   view: &mut GameView,
   context: &mut Context,
   event: &ActiveEvent,
) -> (Time, Box<Action>) {
   ...

as it's visualize_event who knows about separation between important and cosmetic scene actions.

More unit types

  • imp
  • fast imp
  • imp summoner
  • toxic imp
  • giant crab
  • grenade imp
  • swordsman
  • spearman - #65
  • bomb thrower - #69
  • warhammer guy
  • two-axes guy
  • axe-and-shield guy
  • big-axe guy
  • archer
  • crossbowman

mockup:

Re-animate ozkriff.github.io blog

I need a place to post monthly reports and things like that. Using rust forum (as I've done for ZoC) isn't the best option in the long-term perspective.

It would be cool to switch the blog to some Rust generator like cobalt.rs but it seems like none of them support restructuredtext format and I really want to use it.

  • Translate blog's interface to English
  • Translate "about" page to English
  • Add link to twitter
  • Copy ZoC's monthly reports from forum
  • Write a post with the postmortem for ZoC and first Zemeroth's announcement / monthly report
  • Add a short version of postmortem to ZoC's readme (and a link to the full post)
  • Remove "Contribute" section from ZoC's readme
  • [ ] Post "unpublished" drafts (russian)
  • [ ] Add link to the blog to Zemeroth's readme
  • [ ] Fix appearance on mobile by fixing the css - pixels everywhere! X-| - or by changing the theme
  • [ ] embedded youtube videos

Grass

Draw some decorative grass sprites on the battlefield.

image

Armor and Break stats

"Armor" is defensive stat, "Break" is offensive.

From Banner Saga:

Armor (ARM) serves as a defense rating denoting how vulnerable is a unit to attacks. Specifically, Armor protects a unit's Strength by decreasing incoming damage.

Break (AB or BRK) is the amount of direct damage a unit can naturally do to a target's Armor and reduces the enemy's Armor according to said amount.

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.