Giter Site home page Giter Site logo

oaa's Introduction

Open Angel Arena CircleCI All Contributors

A really great Dota 2 game mode built by really great people.

Useful Links: https://warpdragon.github.io

Getting Started

This addon uses the Dota 2 Addon Manager.

Check out all the documentation or just skip to the install instructions

Contributing

Check out the Discord!

There are also issues marked with Great for new contributors.

Music can be found at Soundcloud

Suggestions?

Do not create or comment on tickets in this repository for game suggestions. Use the suggestion repo

Contributors

Thanks goes to these wonderful people (emoji key):


Chris Vickery

⭐️ πŸ’» πŸ”§ πŸš‡ πŸ€” πŸ“ˆ

l34um1

⭐️ πŸ€” πŸ“ˆ πŸ“Ή ⚠️

Ryan

πŸ“– πŸ’¬ ⚠️ 🎨

Nikolai Zimmermann

πŸ’» πŸ“– πŸ’¬

SquawkyArctangent

πŸ’» πŸ’¬

salacryl

πŸ’»

yahnich

πŸ’»

Soo Kuo-Yi

πŸ’» πŸ“–

Rachol

πŸ’»

DΓ©kΓ‘ny KristΓ³f

πŸ“– 🌍

Rodion

🌍 ⚠️ πŸ“–

Honeth | Bob

πŸ“– πŸ’»

Haganeko

πŸ€” πŸ“ˆ 🌍

MelonGod

πŸ€” πŸ“ˆ

Sai

🎡

Ryan Yang

🎡

KarmaticNeutral

⚠️ πŸ’» πŸ“Ή πŸ’¬

kallleeeeh

🌍

DrWallaceBreen

🌍

DJBotan

🌍

Evan W

πŸ’» πŸ“– πŸ’¬

RamonNZ

πŸ’»

darklordabc

πŸ’» πŸ’¬

Roman Babkov

πŸ’»

Alex Tsernoh

πŸ’»

Rebedailo 'marengo_hue' Eugene

πŸ’»

SphereKatzen

πŸ’»

Reinhard Bronner

πŸ“–

Kyle Cooley

πŸ’»

Ben Barone

🎨

Scorpionork
🎨

Obby
🌍

imaGecko

πŸ“– πŸ“ˆ ⚠️ πŸ’»

Minnakht

πŸ“ˆ ⚠️

RionTwist

🎨

Allan vbhg

🎨

Relish3

🎨

hallelsegel

🎨

Apisal

🎨

Robert Fiola

πŸ“ˆ

Daniel Velasquez

πŸ’»

Samuel

🎨 πŸ’»

Tomasz Wawro

πŸš‡

Yzanas

πŸ’»

Wujekklawy

🌍

carlosrpg

🎨 πŸ’»

Dennis Heperol

πŸ’» 🎨

Sergey Sylvian

πŸ’»

GymLeaderGiovanni

πŸ’» πŸ“–

OTAJumperjay

πŸ’» πŸ“–

MasterGordon

πŸ“–

Anthony Diaz

πŸ’» πŸ“–

Newton314

πŸ“–

Nortlen

πŸ“ˆ πŸ“–

Rebedailo 'marengo_hue' Eugene

πŸ’»

ZzZombo

πŸ’» πŸ“–

EarthSalamander #42

πŸ’» πŸ“–

Richard Clutterbuck

πŸ’»

Tyrel Souza

πŸ“–

Darko V.

πŸ“ˆ πŸ’»

This project follows the all-contributors specification. Contributions of any kind welcome!

License

MIT

oaa's People

Contributors

abitthegray avatar carlosrpg avatar chrisinajar avatar chronophylos avatar darkoniusxng avatar declow0 avatar dependabot[bot] avatar gymleadergiovanni avatar haganeko avatar honeth avatar imagecko avatar karmaticneutral avatar l34um1 avatar lovesmuffins avatar melongod avatar minnakht avatar otajumperjay avatar pocketmoney99 avatar rakkis157 avatar ramonnz avatar riontwist avatar satsaa avatar spar36 avatar squawkyarctangent avatar theunholywrath avatar tidesofdark avatar trildar avatar warpdragon avatar yztrash avatar zarnotox avatar

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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

oaa's Issues

Fountain Target Range too long

Fountain targets units too far from spawn. You can abuse this to xp farm the first camp. And it seems like the range shouldn't attack anything that isn't on the fountain's high ground.

Implement "Slime" boss

Notable stats

instead of dying the boss splits into 2 smaller slimes

  • smaller slimes have 75% HP of the original
  • splits a total of 3 times

Arena Modifications

none

Abilities

  • jumps into the air to attack
    * shadow appears below him while he is in the air to show where he is
    * travel time is significant enough to allow for proper dodging
    * deals damage where he lands
    * all enemies hit are pushed away and slowed massively
    * this is his highest single source of damage
  • if you "kill" him he starts shaking violently
    * during that stage he is invincible and throws small projectiles all over the arena
    * they work just like the regular jump, thrown into the air, with a shadow telegraphing where they land
    * come in different sizes
    * players need to focus on dodging them
    * if hit they take damage and are slowed

Balance

Expose the following as configurable variables, either at the top of the lua file or in KV format

  • Base movement speed, hp, regen
  • Size of the Slime
  • damage of the jump
  • duration of the jump
  • push distance and slow duration and %

Multiple item issues

Issues about Upgradable Dota items:

  • Desolator and Blightstone Upgrades don't apply the debuff
  • Manta Style Level 4 spawns 2 Illusions
  • There isn't a 3rd level of Armlet even tho it shows 3 tiers of stats in the tooltip

Weird Issues about AAA items:

  • Shiva's Rush level 1 and 2 is not craftable no matter what you do
  • Lvl 1 Greater Power Treads cleave but lvl 2,3 and 4 does not cleave
  • Lvl 1 and 2 Eul's Scepter of Sancticity have the exact same stats (tested out by comparing stats ingame)

Random fact: The level cap is 5000

Edit by @Chronophylos: Markdown

Add 20 player support for the whole project

Sometimes we're assuming we just have 10 player instead of possibly 20.

  • Go through the whole code and find these occasions.
  • Make sure we're using 20 players.

e.g. change this

for playerId = 0,9 do

to this

for playerId = 0,19 do

or look for arrays like this

{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }

and add the other 10 players

Places where this needs to be done:

  • gold.lua

All things item script related.

The item script directory is in /Scripts/vscripts/

So the questions are what to name the script directory and the naming convention for item lua script files.

Angel Arena Reborn for example calls the directory /items/
and the files just the name e.g. "aegis.lua"
Angel Arena Black Star also the directory /items/
and the files the word item then the name of the item e.g. item_aegis.lua
Epic Boss Fight uses the directory /lua_item/
and the files without the word item e.g. aegis.lua

I'd like to suggest the directory name /itemscripts/ just so nobody will get confused with the /items/ folder in /NPC/.
For the script file name perhaps item_aegis.lua, or script_aegis.lua or even script_item_aegis.lua

Throwing in the word script in the directory and/or lua file means less potential confusion by people looking for the item files.

Enable universal shop

Currently there is no secret shop so secret shop items cant be bought.

  • enable the universal shop.

Implement "Swiper" boss

Notable stats

doesn't attack regularly

  • instead his attacks follow a more "dark souls" logic
    * he swings his sword in a big arc
    * any enemy that touches the sword takes damage
    * if you are in 200(?) range of the boss you will always get it

*every attack has a lengthy wind-up

  • during wind-up the ground will have particles showing where the hitbox of the sword will be, allowing people to dodge
  • every attack deals significant damage although people should be able to tank 4-5 hits
  • there are 3 different kinds of sword swipes (see images in folder)
    *swipe 1 "Thrust": long range, targeted at an enemy in the backlines
    * selects an enemys location at the beginning of wind-up, doesn't home afterwards
    swipe 1
    * swipe 2 "frontswipe": short range, targeted in such a way that it hits as many enemies in range as possible
    swipe 2
    * swipe 3 "backswipe": same range as frontswipe, comes out at random times as a fast follow up to frontswipe
    swipe 3
    * has a shorter wind-up than frontswipe
    * covers mostly the same area as the frontswipe, doesn't do new targeting

phase 2 at 66% hp
phase 3 at 33% hp

Arena Modifications

none

Abilities

  • Phase 1:
    • just the regular attacks to get people used to what the boss can do
  • Phase 2:
    * boss gains "rush" ability
    * long cooldown (10s?)
    * needs to be visually obvious
    * boss holds out sword with active hitbox to the right of him
    rush 1
    * boss rushes to a location in the arena
    rush 2
    * enemies hit by the sword take massive damage
    * enemies hit by the boss get pushed away, get slowed and take a little damage
  • when the boss finishes the rush he does a big aoe swing attack that deals massive damage

rush 3

  • Phase 3:
    • boss gains teleport ability
    • before each swing he teleports behind a random enemy in the arena and then the wind up starts

Balance

Expose the following as configurable variables, either at the top of the lua file or in KV format

  • Base movement speed, hp, regen, damage, etc
  • AOE of Attacks
  • Rush Speed
  • Windup speed

Power Treads need LUA

I've got a 90% working pair of greater power treads on my fork. atm they give proper everything except no toggle. toggle will be a bit of a trick:

  1. Need a boot of every stat type (agi, int, str)
  2. Need to make only one of 3 craftable (does not matter which. maybe str) so the shop doesn't have 9 billion pair of treads showing
  3. Each pair needs an ability that replaces itself with the next item in the series (str -> agi, agi -> int, int -> str)
    In the end there will be:
  • greater_power_treads_1_i
  • greater_power_treads_1_s
  • greater_power_treads_1_a
  • greater_power_treads_2_i
  • greater_power_treads_2_s
  • greater_power_treads_2_a
  • greater_power_treads_3_i
  • greater_power_treads_3_s
  • greater_power_treads_3_a
  • greater_power_treads_4_i
  • greater_power_treads_4_s
  • greater_power_treads_4_a
  • greater_power_treads_5_i
  • greater_power_treads_5_s
  • greater_power_treads_5_a

Implement OAA unique items

Here's a quick rundown of the items

  • Refresher Core - Octarine with Refresher
  • Satanic Core - Octarine with Satanic
  • Shivas Cuirass - Shivas plus AC
  • Shivas Rush - Shivas plus Drums (both actives combined)
  • Shroud of Shadows - Make self/ally invisible + Not attackable
  • Urn of Sorcery - AOE Urn that gains charges on enemy spellcast
  • Vlads Helm - Vlads plus Dominator
  • Stoneskin Armor - Toggle to gain armor
  • Trumps Fists - Deso + Skadi
  • Aether Glasses - Increases AOE of spells, not range
  • Azazel's Crossbow - Double Calldown
  • Charge BKB - Magic Immunity Active charges on enemy spellcast
  • Dash Staff - Push self forward, 0.1s invinc. frame, charge based CD
  • Allied Euls - Cyclone self, allies, or enemies
  • Jump Dagger - Jump to unit
  • Lucience - Switch between heal and movespeed auras
  • Martyr's Mail - Heal allies for % damage taken
  • Rainbow Radiance - Toggle between MS/AS/dmg/Heal/Armor/Magic auras
  • Pull Staff - Move self or other unit backward
  • Proximity Radiance - Aura that does high damage at a set distance from caster
  • Siege Mode - Toggle to gain splash attack (+range?), lose ability to move
  • Staff of Confusion - Target enemy's spells target themselves
  • Staff of Confusion - Target ally's or enemy's abilities' heal/dmg are reversed

Edit by @Chronophylos: Added checkboxes

Implement "Stop Fighting Yourself" Boss

Notable stats

Lots of magic resistance and armor.

phase 2 at 66% hp
phase 3 at 33% hp

Arena Modifications

none

Abilities

  • phase 1
    • he applies all debuffs on him on every attack
  • phase 2
    • every 5 seconds he duplicates the item set of the next hero to attack him
    • active items would be used instantly and on random targets
    • except bloodstone
    • if aegis is in the game also needs to be muted
    • attribute bonuses would have to be converted into their factual bonuses
    • not sure if cooldowns should be reset
  • phase 3
    • creates illusions of all enemy heroes in the arena that can use all items and abilities
    • illusions deal less damage, take more
    • use their spells and items on random targets but not all at once
    • can be killed but dont have a timer
    • dissappear if the boss dies

Balance

Expose the following as configurable variables, either at the top of the lua file or in KV format

  • Base movement speed, hp, regen, damage, etc
  • damage variables for illusions

Sand King Leveling bug

Sang king cannot level anything at levels 1-4
Burrowstrike is available at 5, 10, 15 ......
Sandstorm and Caustic Finale can be leveled at 6, 11, 16.....
Epicenter can all be leveled at 6, 13, 20....
Once you hit the required level, all skill points necessary are given. Talents behave normally
No other hero that I have tested has this skill leveling pattern.

Implement Shield Boss

Notable stats

Has a shield or barrier of sorts blocking an angle around it, centered on the direction it's facing, which functions like Bristleback (from the eponimous hero), reducing all damage caused by sources in that angle. The shield does not offer any protection from stuns or spells beyond the damage reduction.
Has a decent-powered melee attack.
Keeps track of how much damage (before all reductions) each unit has dealt it in the last X seconds (value up to balance), and always aggro's the one which has dealt the most.

phase 2 at 75% hp
phase 3 at 50% hp

Motivation

The boss should challenge players' aggro management (can they afford to cast a spell at the boss without having it turn?), positioning (to stay inside the unshielded sector, from which they can cause damage)) and mobility (if the boss's aggro does turn, to keep their positioning).

Arena Modifications

The available space should be a disk, or a square if that's unavailable.

Phase 1:

The shield covers 45 degress to either side of the direction the boss is facing (total span 90 degrees).

Phase 2:

The shield covers 100 degrees to either side of the direction the boss is facing (total span 200 degrees).

Phase 3:

The shield covers 160 degrees to either side of the direction the boss is facing (total span 320 degrees).

Balance

Expose the following as configurable variables, either at the top of the lua file or in KV format

Base movement speed, hp, regen, armor etc.
Damage reduction from the shield.
Time window for the aggro change.

Moar-abilities

Create and debug all ability KV files. Project is nearly done. Figured i'd post the job officially since it hadn't been yet. Check my repo for updates soon.

Implement "Mirror" Boss

Notable stats

Is always floating around the arena into random directions with 150 or so movement speed

phase 2 at 66% hp
phase 3 at 33% hp

Arena Modifications

  • The entire arenas border has a mirror effect going on
    • preferably even a visual effect
    • maybe people can even bounce spells off of it
    • If any of the bosses abilities hit the mirror they are reflected and continue flying

Abilities

  • Phase 1:

    • throws out orbs that deal damage when you touch them
    • These orbs are relatively big, don't dissappear until the boss is dead and bounce of the mirrors
    • There is a maximum amount of them, like 4 or so
  • Phase 2:

    • the boss starts firing a Kamehameha style laser
    • Before he does so he makes a dash away from the enemies
    • The lasers direction is clear
    • The laser bounces of the mirrors multiple times (unsure about the speed but either very fast or instant)
    • You take damage for every frame you touch the laser
  • Phase 3:

    • the boss now starts throwing smaller but faster orbs into the fight
    • There is no limit to these so the fight becomes a race against the clock since eventually the entire arena will be covered

Balance

Expose the following as configurable variables, either at the top of the lua file or in KV format

  • Base movement speed, hp, regen, armor etc
  • damage, speed, aoe of orbs
  • damage, speed, aoe, length of laser

Moar-docs

Moar-Docs

The goal of the Moar-docs branch is to compile EVERYONES information into one spot where I (and others) can view, edit, and finally merge everything into the final project. We are interested in "official" information directly related to the development, release, and support of the AAA project. Think of it this branch as a Library, ensuring that everyone has easy access to the most current information available. To that end, those who contribute are also asked to seek out and make contacts on the various teams, and work with key members to ensure that notes are taken and reported to Moar-docs whenever ideas or designs become "official".

So what does "Official" mean?

There's a lot of ideas floating around. But most aren't official. If you're not sure whether something is official, first check /docs. If the document is not there, click "Search" in discord to see if a similar question has already been asked. If you're positive it has not been asked & answered, and assuming you've followed each of the preceding steps thoroughly, the next step is to ask in the appropriate help channel with "@" to a Core Member in the Discord.

Things you can contribute

Artists can write up documentation on creating and baking textures, creating models, etc. Anything any team feels would be necessary to publish in case new members need a reference to start working quickly and effectively. Musicians can write up documentation on putting music into the game, Balance can publish their workflow, Design can publish the official design philosophies so they can stop repeating themselves every 10 seconds. You get the idea!

Ways to contribute

  1. Open an issue at http://github.com/warpdragon/aaa/issues. Tag your issue [Links], [Tables], [Instructionals], [Resource], etc please.
  2. Create your own development branch (preferred method) and send a pull request to https://github.com/warpdragon/aaa/tree/moar-docs or https://github.com/angelarenaallstars/aaa for the direct route.
  3. Do not reply to this post with submissions.

Questions about Moar-docs?

Don't open an issue, just ask!

Kill Limit

The way that you win! Lets call them points instead of kills, so that other things can count towards the points!

  • Create panorama element for voting for the kill limit
  • When kill limit is hit, win game and show some sort of blank win screen (probably a meme image)

Boss battle system

We need some generic API's for composing boss battles. This is not for the bosses or their abilities, but everything around that.

  • API to teleport players to a given zone where a boss fight can happen

    • stub in flow to pass which boss is summoned*
    • Consider that some boss battles people can join later, while others they cannot.
  • need / greed / pass for item drops

    • Panorama UI displayed to players
    • Logic to give out items based on selections
  • We can decide what the object that is passed through looks like later, when we design the actual bosses.

Implement Azazel

Notable stats

Crossbow Attack: Azazel shoots 2 bolts into the air that comes down after a short delay with a visual indicator. The botls comes down one after another (in different areas), and deals damage in the indicated AoE. This ability is used in all 3 phases.

Starts out with a ranged autoattack, converts to melee at phase 3.

Phase 2 at 70% hp
Phase 3 at 40% hp

Arena Modifications

Azazel is located in the middle arena.

Phase 1:

Regular ranged rightclick.

Phase 2:

As soon as phase 2 is triggered Azazel shoots (2 bolts) from his crossbow. As the bolts land he teleports to one of them, while the other location spawns an illusion.

The illusion and Azazel are linked up together. They then slowly move in a circular fashion around the arena. If you touch the link, you get damaged and stunned. Both Azazel and the illusion still do regular ranged attacks during this.

If you damage the boss enough, the illusion disappears and Azazel enters phase 3. If you kill the illusion he receives damage, which is just enough to trigger phase 3.

Phase 3:

He gains a spear, becoming melee.

Spear Ability: A swiping attack that after a windup, pushes enemies caught in it across the arena.

Meteors: Meteors start raining down, leaving permanent fire marks where they land. The meteors deals damage in the indicated AoE, and the fire marks deals AoE damage over time.

Balance

Expose the following as configurable variables, either at the top of the lua file or in KV format

HP, right click damage, armor, movespeed.
Damage of the crossbow blasts.
Phases HP threshold.

Phase 2 link's damage and stun duration.
Phase 2 movement speed.
Illusion damage dealt/taken.

Meteors damage, both the initial impact and the DoT.
Rightclick damage for phase 3 also need to be seperately adjustable.

Spells That Require Recreating - Summons

Summon spells that spawn different units for different levels instead of modifying a single base unit are not hardcoded to allow for additional levels. To bypass this, we'll need to code them from scratch so that they can be given a higher maximum level - or at least, give their heroes another spell to take up the skill points.

  • Call of the Wild ( both )

  • Chaotic Offering

  • Demonic Conversion

  • Mass Serpent Wards

  • Nether Ward

  • Plague Ward

  • Primal Split

  • Summon Familiars

  • Summon Spirit Bear

  • Summon Wolves

  • Tombstone

Might need to check Homing Missile, too, as AAR ( iirc ) limited it to four levels max, although that might've been because the spell previously summoned different units in the past but no longer does.

Also, this goes for Necronomicon as well, but as every Necro level is actually a different item due to how leveled items work in DOTA 2, adding further upgrades does not require remaking the previous ones ( aside from recreating how they work in the new ones are supposed to work similarly ).

Implement "Honorable Angel" boss

Notable stats

Lots of magic resistance and armor.

phase 2 at 80% hp
phase 3 at 50% hp
phase 4 at 20% hp

Arena Modifications

none

Abilities

  • Phase 1: Just regular rightclicks, nothing special
  • Phase 2: he gets fed up with people ganging up on him. Every now and then he'll scream "fight me honorably, curs!" and push away and disarm everyone near him who's not his current target. The push/disarm is a constant effect like havres wind. It is canceled once the boss gets stunned.
  • Phase 3: he'll start saying "I challenge thee!", and pulls the farthest hero to himself (like a forcestaff push)
  • Phase 4: he'll scream "I have had enough"; the pull now creates an arena that the pulled enemy can't leave

Balance

Expose the following as configurable variables, either at the top of the lua file or in KV format

  • Base movement speed, hp, regen, damage, attack speed
  • pull range
  • wind effect push speed
  • duel arena aoe

Translations for need/greed/pass UI

Request for translations

Need/Greed/Pass UI, as shown here... https://clips.twitch.tv/chrisinajar/GiftedAlligatorAsianGlow

Key: "ngp_need"
English copy: "Need"
Key: "ngp_greed"
English copy: "Greed"
Key: "ngp_pass"
English copy: "Pass"
Key: "ngp_builds_into"
English copy: "Builds into"

Add in the complete translation before checking the list item.

  • Chinese translation:
    • ngp_need: "ζ€₯ιœ€"
    • ngp_greed: "θ΄ͺεΎ—"
    • ngp_pass: "弃权"
    • ngp_builds_into: "ε―η»„ε»Ίζˆ"
  • Russian translation:
    • ngp_need: "НуТно"
    • ngp_greed: "Π₯ΠΎΡ‡Ρƒ!"
    • ngp_pass: "Пас"
    • ngp_builds_into: "Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²"
  • Spanish translation:
    • ngp_need: "Necesidad"
    • ngp_greed: "Codicia"
    • ngp_pass: "Pasar"
    • ngp_builds_into: "Se mejora a"
  • Portuguese translation:
    • ngp_need: "Necessidade"
    • ngp_greed: "GanΓ’ncia"
    • ngp_pass: "Passe"
    • ngp_builds_into: "Parte de"

Duel code calls GetAbilityByIndex with invalid index

In the Duels:ResetPlayerState function and elsewhere, there are loops going from 0 to hero:GetAbilityCount(). I'm guessing that it should actually be hero:GetAbilityCount() - 1 since abilities are zero-indexed?

Duels

Duels are the staple of Angel Arena. Implement them!

  • HUD element showing the remaining duel timer
    • extra credit for adding a vote widget to force duel
  • When timer hits 0, DUEL!
    • Teleport n of m heroes into the arena, teleport the remainder to the sidelines
    • Disable all sidelines heroes
    • Reset the cooldowns and resources of all heroes, storing their previous values
  • When only 1 team has heroes left, the duel is over
    • Teleport all heroes back to where they were before the duel
    • Restore all resources and cooldowns (optionally minus time spent in duel) to what they were

Adjust level cap and stat equation

  • The current level cap is 5,000. Set it to 10,000.
  • The current diminishing return equation for stats is div = level / 20. Set it to div = (level - 25 + 12)/12

Need Ability-UI for 6/5 lvl spells

Need Ability-UI for Six-Level abilities

By default, I believe, Dota only properly displays the ability-level indicator dots (you know the ones) beneath Hero-Abilities in odd-numbers. Currently if you were to, say, put a six-level hero ability in AAA, it would only show the first 5 indicator dots (the sixth being hidden/invisible/just not there at all). vOLvo Pls

Need a LUA-scripting/PNG-overlay solution for displaying an even number (6) of dots beneath a spell.

Infinite gold

It is important to the mode that players have infinite gold capacity.

AAR appears to implement it by polling users gold (or perhaps hooking on gold gain events) and storing off / replacing gold above / below a certain line. Looking at other mods, it's possible that the cap on gold simply doesn't exist anymore and we may not need to do this at all. For example, AABS displays gold well into the 6 digits.

Figure it out, post results.

Implement Runaway Boss

Notable stats

This boss moves around the boss arena in a pattern, shooting projectiles in its wake. Maybe it is moving backwards and shooting, maybe it is shooting from its back.
No autoattack.
Anyone standing directly on the way gets trampled (damaged and stunned).

phase 2 at 80% hp
phase 3 at 40% hp

Arena Modifications

There should be plenty of space for the boss to move.

Phase 1:

The boss moves in a simple pattern, like a circle or a figure eight.

Phase 2:

More complex movement pattern (example below), chosen from a pool of two.
hexagon
Shooting is faster.

Phase 3:

Movement pattern is erratic, changing between a few patterns every now and then (can be comprised of all the earlier ones). Bullet hell.

Balance

Expose the following as configurable variables, either at the top of the lua file or in KV format

Base movement speed, hp, regen, armor etc. Movement speed is especially important.
Rate of fire.
Damage and duration of the trample stun.

That's a pitty problem

So i dont know how to tell u my idea, on twitch or on yt? i dont belive that u read all that shit. So read here. I was thinking about, that for example boots which are giving movement speed and attack, those decrease armor. Anywas debuffs on items. It would make people to think which items to buy and it ll kill all cancer builds. ^_^ hope u like it

Creep camps

Currently there is a dead simple creep camp system which supports the following:

  • Create areas with a special creep_camp name.
  • All creep_camps have a type and a maximum number of units allowed to spawn

New Features

  • Creeps Upgrade In Place
    We want to add a special functionality when the camp is at maximum size: Upgrade the existing creeps instead of spawning new ones or not spawning anything. This upgrade path should likely be linear based on the core creeps (not the upgraded ones) or it should be plainly diminishing.

  • Creeps Upgrade Over Time
    As the game goes, all of the creeps spawning everywhere should progressively get stronger and stronger. This should be as configurable and generic as possible as it is likely we'll reuse this logic a lot.

  • Creeps Drop Items
    Right now they don't! Figure out a good creep item drop system and expect it to need to be changed a million times over again and again by the balance team. The droppable items should also upgrade along similar tracks as the above two features.

Infinite death

During duels we disable respawning. For some reason sometimes you die forever even though we re-enable respawn at the end of the duel. Dying forever kind of sucks, so please fix.

Implement "Charger" boss

Notable stats

Lots of magic resistance and armor.

phase 2 at 66% hp
phase 3 at 33% hp

Arena Modifications

During the fight there are pillars in random locations.

Abilities

  • Charge: Selects a target, gives a visual indicator that they're being charged. Charges, and if he misses he keeps going. If he strikes a pillar, it is destroyed and stuns the boss, reducing his armor and magic resistance during the stun
    • If a hero is struck directly they are dragged like magnus skewer. If the boss strikes a pillar the hero instead is stunned and takes massive damage, the boss is unaffected.
    • If he hero is struck indirectly they're pushed away and slowed and take damage
    • During 2nd phase, cooldown is reduced and the charge has a small homing effect.
    • During 3rd phase, has no cooldown and can cancel mid-charge (could be another "fake charge" ability). When he cancels it, immediately casts charge again.

Balance

Expose the following as configurable variables, either at the top of the lua file or in KV format

  • Base movement speed, hp, regen
  • charge speed for all 3 phases as variables
  • Animation time for charge for all 3 phases
  • Stun duration for boss
  • base resistances and resistance reduction from pillar strike
  • Stun duration for hero, damage for hero
  • Push back radius for glancing blow, slow % and duration, damage
  • Damage for hero struck directly

Blink Blocker Bug - Bottom Right

If you try to blink into the bottom right area of the map, you get pushed into the wall, where you are stuck until you can blink out of the wall.

*** Did this on fork of master with AM lvl 1 blink.

blink blockers

Create/edit Hero Units (Like Misha)

The Items are on their way, and the heroes... but we need someone to go in to NPC Data (KeyValues) and alter some of the existing units and also to create some new units which are to comport with the values contained in the O-fficial hero Balance Document. There will be a party with c🍰ke once you've completed your task.

Such units include, but aren't necessarily limited to:
Misha
Boar
Hawk
Earth
Storm
Fire
Spiderlings
Treants (we also need a new custom treant in addition to the existing ones)
Courier (don't alter it, we just need a new one for decoy courier).

KV Jobs

KV Related: ver 1 non-critical "fun" projects

Tooltips

  1. Work with Coders to determine the nature of the new debuffs required and build them. Debuff tooltips are simple compared to ability ones, luckily. Tooltips should follow the needs of coding. For instance there are several new radiances in this mode, and all of their debuffs should be unique, and have associated tooltips. KV follows the needs of coding.

  2. Debug to make sure all spells report proper data to the tooltips and that this data is being clearly displayed to the player. Keep descriptions and lore as concise and to-the-point as possible.

Implement Nash Social Welfare NGP

Implement a Nash Social Welfare optimization for boss item distribution - the process is described below.

Description of the process

Each player starts with a base total valuation of 1000

Whenever a boss dies:
First, we obtain each players valuation for each of the items.
We do so by asking them whether they Need, Greed or Pass each item.

For an item a player Passes, their valuation is 0
For an item a player Greeds, their valuation is the item's sale price
For an item a player Needs, their valuation is the item's purchase price

Distribute the sale prices of the items a player passed as increments to their valuation of the items they Needed
Drop any items all players passed on the base.

Then, for each possible distribution of the remaining items, add up each player's total valuations of the items they'll get, and add it to their current valuation. This is that player's fitness for that distribution.
The distribution's fitness is equal to the product of all player's fitnesses for it

Pick one of the distributions with the highest total fitness, and distribute the items accordingly

Update each player's current total valuation to their fitness for the chosen distribution
Display a dice roll showing that the player won the item

Example

Boss A just died, and it dropped two items: Item A, with sale value 500 (purchase value 1000), and Item B, with sale value 100 (purchase value 200).

For Item A
Player 1 passes; base valuation for item A is 0.
Player 2 needs; base valuation for item A is 1000.
Player 3 greeds; base valuation for item A is 500.
Player 4 greeds; base valuation for item A is 500.
Player 5 passes; base valuation for item A is 0.

For Item B
Player 1 (current value 1000) passes; base valuation for item B is 0.
Player 2 (current value 1500) passes; base valuation for item B is 0.
Player 3 (current value 1700) passes; base valuation for item B is 0.
Player 4 (current value 1000) passes; base valuation for item B is 0.
Player 5 (current value 2000) passes. base valuation for item B is 0.

Item B is dropped at the team's base.

Since Player 1 passed items, their total sale value (600) is distributed among the items Player 1 needed.
Player 1 didn't need any items.

Since Player 2 passed items, their total sale value (100) is distributed among the items Player 2 needed.
Player 2's valuation for item A is increased to 1100.

Since Player 3 passed items, their total sale value (100) is distributed among the items Player 3 needed.
Player 3 didn't need any items.

Since Player 4 passed items, their total sale value (100) is distributed among the items Player 4 needed.
Player 4 didn't need any items.

Since Player 5 passed items, their total sale value (600) is distributed among the items Player 5 needed.
Player 5 didn't need any items.

Now we look at item distributions. There is one item to distribute.

We will need the players' current values.
Player 1 has current value 1000
Player 2 has current value 1500
Player 3 has current value 1700
Player 4 has current value 1000
Player 5 has current value 2000

Option 1: give item A to Player 1
Player 1 has fitness 1000
Player 2 has fitness 1500
Player 3 has fitness 1700
Player 4 has fitness 1000
Player 5 has fitness 2000
Net fitness is 5.1x10^15

Option 2: give item A to Player 2
Player 1 has fitness 1000
Player 2 has fitness 2600
Player 3 has fitness 1700
Player 4 has fitness 1000
Player 5 has fitness 2000
Net fitness is 8.84x10^15

Option 3: give item A to Player 3
Player 1 has fitness 1000
Player 2 has fitness 1500
Player 3 has fitness 2200
Player 4 has fitness 1000
Player 5 has fitness 2000
Net fitness is 6.6x10^15

Option 4: give item A to Player 4
Player 1 has fitness 1000
Player 2 has fitness 1500
Player 3 has fitness 1700
Player 4 has fitness 1500
Player 5 has fitness 2000
Net fitness is 7.14x10^15

Option 5: give item A to Player 5
Player 1 has fitness 1000
Player 2 has fitness 1500
Player 3 has fitness 1700
Player 4 has fitness 1000
Player 5 has fitness 2000
Net fitness is 5.1x10^15

The algorithm chooses Option 2, and awards the item to Player 2. It then displays a dice roll to justify the decision.
It updates Player 2's current value to 2600.

Note that, had Player 4 Needed the item, they would have been awarded the item, as Option 4's net fitness would have been 10.71x10^15

Pseudocode Suggestion

//Determines how much each player in given player vector values each item in given item vector##

Item_Evaluation(items, players)
  for each (player)
    set player.passpool = 0
    set player.total_needed_items = 0
  for each (item, player)
    set item.ngp = get_ngp_choice()
  for each (item, player)
    if item.ngp = greed
      set value(item, player) = item.sellprice
    if item.ngp = pass
      set player.passpool = player.passpool + item.sellprice
      set value (item, player) = 0
    if item.ngp = need
      set value(item, player) = item.buyprice
      increase player.total_needed_items
  for each (item, player)
    if item.ngp = need
      set value (item, player) = value (item, player) + player.passpool/player.total_needed_items

//Given item and player vectors, determines best item allocation to maximize Nash Social Welfare##

Value_Calculation(items, players)
  selection = 0
  selection_fitness = 0
  Item_Evaluation(items, players)
  for each item_distribution
    for each player
      fitness(player) = player.current_value + value(items given to player, player)
    fitness(item_distribution) = fitness(player1)*fitness(player2)*...*fitness(player5)
    if fitness(item_distribution) > selection_fitness
      selection = item_distribution 
      selection_fitness = fitness(item_distribution)
  return selection

//Whenever a boss dies, distribute items according to best allocation##

Main()
  On_Game_Start
    for each (player)
      player.current_value = 1000
  Whenever (Boss_dies)
    item_distribution = Value_Calculation(drops, team)
    for each (player)
      give items allocated
      player.current_value = player.current_value + value (items given to player, player)
      display(roll_die)

Moar-items

Create and debug all item KV files. Project is nearly done. Figured i'd post the job officially since it hadn't been yet. Check my repo for updates soon.

Implement Carapace Boss

Notable stats

Has a carapace of sorts with chinks in it. Hitting from the direction of a chink (a ~10 degree window?) automatically crits (or otherwise shows clearly that it causes extra damage).
Has a decent-powered melee attack.
Has a slow turn rate.

Phase 2 at 80% hp
Phase 3 at 30% hp

Arena Modifications

None are necessary.

Phase 1:

The boss has two chinks, and attacking from a 10 degree window around the chink's center will deal extra damage.

Phase 2:

Every now and then (say, 10 seconds), a chink will start to glow. After two seconds, the chink will deal AoE damage in a cone (the same area from which extra damage is possible)

Phase 3:

More chinks (four), the charge-up is quicker (one second?) and it happens more frequently (every 5 seconds?)

Balance

Expose the following as configurable variables, either at the top of the lua file or in KV format

Base movement speed, hp, regen, armor etc.
Angle and bonus damage for attacking a chink.
Charge time, frequency, angle and damage for the AoE cone ability.

Custom ability level requirements not properly enforced for linked abilities

I haven't tested the actual code pulled into master, but I was trying pretty much the same implementation myself some time before. The issue with hooking OnPlayerLearnedAbility for this system is that the ability OnUpgrade event still fires, which causes linked abilities to still level up and whatever else might happen OnUpgrade (I think Monkey King Tree Dance and Primal Spring is one example, and I specifically tested Lone Druid's ultimate with my implementation).

P.S. I'm pretty sure the ability class has a method GetAbilityType to get the ability type, i.e. Basic/Ultimate

Edit: Confirmed that this issue exists on current master

Add gold values to creeps

Currently the values for gold per creep type are completely arbitrary. Replace them with this.

easy creep 15 gold initially
med creep 23 gold initially
hard creep 45 gold initially

multiplier at minute n is just n/2+1

Implement music player

This is a very very subtle panorama element. It should just be a single button, which toggles music on and off, with a music note on it. When the music is on, it also displays the name/artist of the song playing next to it.

Have the currently playing song set by net tables, don't worry about the lua side for now.

Integrate custom gold system with shop and buyback

Currently the custom gold system doesn't work with any of the built in dota stuff.

  • Make buying from shop use custom gold
  • Make buyback use custom gold
    • UI elements which show if buyback is available (plus tooltips)

Code JOBS

Override the Following Summoning Spells

  1. Giant Treant
    Nature's Prophet's "Force of Nature" (the treants) must become very powerful at levels 5 & 6 without just creating massive armies of trees (massive armies cause lag, inhibit proper movement and targeting, etc). There is a unit in .../npc/units called "npc_dota_furion_giant_treant_#" that will solve this. Starting at level 5, some or all of NPs treants become 4x as powerful (thus cutting the number of treants needed in half). This basically means overriding vanilla "Force of Nature" with a custom LUA version. Link to Pizzalol spell: https://github.com/Pizzalol/SpellLibrary/blob/master/game/scripts/vscripts/heroes/hero_furion/force_of_nature.lua

  2. Giant Spiders
    The exact same thing as above. The new unit is called "npc_dota_broodmother_giant_spiderling_#". There is also a "npc_dota_broodmother_giant_spiderite_#" incase it's needed. I believe the Spiderite is the unit associated with the spell's Debuff/spawning mechanic but I'm not entirely clear as to how. No Pizzalol spell reference can be located. Perhaps the implementation would be similar to the Eidolon spell, found below.

  3. Giant & Colossal Eidolon
    Same as above. "npc_dota_giant_eidolon" and "npc_dota_colossal_eidolon" are the level 5 & 6 Eidolon, respectively. Unfortunately I can't think of a way to implement them without writing a new spell. Pizzalol spell: https://github.com/Pizzalol/SpellLibrary/blob/master/game/scripts/vscripts/heroes/hero_enigma/demonic_conversion.lua

Create New Item Summoning Spells

  1. Turret. Basically a placeholder KV file with similar properties to a pugna ward; name is "npc_dota_turret". Needs pretty heavy coding. It should use a portion of the Hero's damage and apply onHit Procs. Ability KV probably needs heavy editing as well as the tooltip. Needs an ability.

  2. Spell Totem. Similar to above but for "npc_dota_spell_totem". This item summons a totem that casts all the player's abilities and item abilities with shared cooldowns.

  3. Healing Mine. Ability should spawn multiple "npc_dota_healing_mine" in front of the player, these can be picked up by nearby allies for healing.

  4. Throwing Dagger. Ability should throw a dagger projectile which will create a "npc_dota_throw_dagger" in the ground at a location. After x seconds, the player may teleport to the dagger. I believe the teleport follows the same onAttacked break rules as Blink dagger.

  5. Decoy Courier. Ability should create an "npc_dota_decoy_courier" which walks around, has fake items, and explodes on death.

Remove treads recipe

Right now the basic dota treads have a recipe added to them. we don't want to edit any of the base items from dota, so this should be removed.

Infinite levels

In AAA we're going to have infinite levels!

  • Raise the cap to at least 10,000 (or infinite if possible)
  • Ensure the UI supports at least 4 digits
  • Replace normal stat gain with a diminishing return equation
    • Up until level 25, normal stat gain
    • From level 26 onward, do f(x) = x / (level / 20)

Item hirarchy documentation

An extension to the shop that explains items and item-chains. Should be "optional".

  • add js and panel (xml) files,
  • arrange panels
  • add real content

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.