Giter Club home page Giter Club logo

spelllibrary's Introduction

SpellLibrary

This repository is a collection of remade Dota 2 Hero abilities for the use of the Dota2 modding community by the Dota2 modding community

If you have any questions regarding the project or if you have found a bug/issue with the spells then feel free to create an issue or contact us on irc

Forum thread

Progress so far

Contribution & Guidelines

If you wish to contribute to this project then it is prefered if you could follow the following guidelines when contributing

  • Lua scripts should be separated on a per hero basis

  • Use as many AbilitySpecials as possible, do not hardcode the lua file.

  • Don't use Global Lua Events, abilities should work without any main addon scripts.

  • Don't bother with completely dota-hardcoded interactions

  • Implementing Aghanims upgrades and casting animations is not neccessary

  • Implementing Refresher compatibility is recommended but not mandatory

  • Use default particles and sounds

  • If you find an ability that seems hard or impossible to rewrite, ask and document your attempts, others will help you

  • It is fine to use BMD's Timers and Physics libraries

  • KV abilities should be saved as abilityname_datadriven.txt inside scripts/npc/abilities/HERONAME/ folder

  • Lua abilities should be saved as abilityname_lua.txt inside scripts/npc/abilities/HERONAME/ folder

  • Lua scripts should be saved as abilityname.lua inside scripts/vscripts/heroes/hero_HERONAME/ folder

  • Every KV file should have this in its header(EXAMPLE)

// Rewrite of HERONAME ABILITYNAME
// Author: AUTHORNAME - the name of the author or authors that created this ability
// Date: MONTHNAME DAY, YEAR(eg. February 12, 2016) - date on which the file was created or had modifications
// Version: eg. 6.86 - latest game version for which this ability is up to date
// Type: Datadriven, Lua or Datadriven/Lua - what kind of type this ability is
// Notes: write any notes regarding the ability such as particle incomplete, minor differences compared to the original ability, etc.
//
// List the file requirements if the ability requires other files to function
// ----- FILE REQUIREMENTS -----
// Script files:
// scripts/vscripts/heroes/hero_HERONAME/ABILITYNAME.lua
//
// KV files:
// scripts/npc/abilities/HERONAME/ABILITYNAME_datadriven.txt
//
// Unit files:
// scripts/npc/units/UNITNAME.txt
  • Follow this coding style:

For Datadriven KeyValues

"OnSpellStart"
{
    "RunScript"
    {
        "ScriptFile"    "heroes/hero_name/ability_name.lua"
        "Function"      "AbilityName"
    }
}

For Lua functions

--[[
    Author:
    Date: Monthname Day, Year
    (Description)
]]
function AbilityName( event )
    -- Variables
    local caster = event.caster
    local ability = event.ability
    local value = = ability:GetLevelSpecialValueFor( "value" , ability:GetLevel() - 1  )

    -- Try to comment each block of logical actions
    -- If the ability handle is not nil, print a message
    if ability then
        print("RunScript")
    end
end
  • Modifier Name conventions

    • Start with "modifier_"
    • Then add the spell name (no hero name)
    • Add "_buff" "_debuff" "_stun" or anything when appropiate

Recommended resources

Special Thanks

Noya for many of his tutorials

BMD for his libraries

Attero for his npc_abilities splitter

cris9696 for his files joiner

zedor for Custom Errors plugin

Myll for his Dota2ModKit tool

spelllibrary's People

Contributors

pizzalol avatar yolospaghetti avatar kritth avatar mnoya avatar rookdota avatar ltx-dev avatar nightborn avatar ractis avatar rccoles avatar yahnich avatar vvv-aa avatar kirmesbude avatar reatsukuda avatar fcalife avatar ondrowan avatar mayheim avatar igo95862 avatar dli42 avatar dustingraham avatar hewdraw avatar nonamepaul avatar readmecritic avatar tidesofdark avatar sidaw avatar wouterz90 avatar ggthb avatar jere535 avatar tianrenli92 avatar

Watchers

James Cloos avatar  avatar

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.