Code Monkey home page Code Monkey logo

ssbu-mod-workshop's Introduction

Smash Ultimate Modding Workshop

The Smash Ultimate Mod Workshop is the series where I go over everything from getting started to editing status scripts. This repo has all of the code examples from the series, as well as some resources and written tutorials. Any questions/comments/concerns/grievances/vexes/gripes, message me on Discord @LilyLambda

The videos use Smashline 1, while the repository is up-to-date for Smashline 2. The changes are very minimal and the videos still apply.

Here's a link to the playlist

Flowchart

graph TD;
    %% Class Declarations
    classDef default stroke-width:2.5px;
    classDef toolTip fill: #333, stroke: black
    classDef hlG stroke: green
    classDef hlR stroke: red

    %% Node Declarations
    tt1{{Want to know the order to watch epiosdes in?}}
    tt2[Check out the flowchart!]
    tt3([Please note that it's currently a WIP])
    tt4([It can be found above the README in the file list])

    %% Connections
    tt1 --> tt2 --> tt4
    tt2 .-> tt3
    
    %% Class Additions
    class tt1,tt2,tt3,tt4 toolTip
    class tt1 hlG
    class tt3 hlR
Loading

List of episodes and what's covered in them:

  • Setting up a workspace to start code modding
  • How hitbox scripts are composed
  • macros::ATTACK and its parameters
  • macros::FOOT_EFFECT
  • macros::EFFECT_FOLLOW
  • macros::AFTER_IMAGE4_ON_arg29
  • macros::AFTER_IMAGE_OFF
  • macros::EFFECT_OFF_KIND
  • EffectModule::req_screen
  • Putting one character's hitboxes on another
  • Porting animations with arcexplorer
  • Editing fighter_param.prc with smashultimatetools
  • Editing motion_list.bin
  • Using the replace tool in an IDE
  • Function cannot be found
  • Mismatched types
  • Wrong amount of args
  • const)&const
  • operatorbool
  • float var
  • hash40 error
  • Unclosed/mismatched delimter
  • How to search in discord
  • DamageModule::add_damage
  • DamageModule::damage
  • DamageModule::heal
  • If else statements
  • Greater & less than statements
  • ControlModule::check_button_on
  • ControlModule::get_stick_x & ControlModule::get_stick_y
  • Declaring variables
  • Usage of cpp.rs
  • Replacing multiple attack scripts at once
  • Replacing scripts for taunts
  • StatusModule::change_status_request_from_script
  • ControlModule::set_attack_air_kind
  • Global fighter frames
  • Fighter-specific fighter frames
  • Running code on players other than player 1
  • MotionModule::motion_kind
  • fighter.change_status
  • WorkModule::set_int
  • Making a move always active
  • Using ||
  • MotionModule::frame
  • FighterMotionModuleImpl::get_cancel_frame
  • CancelModule::enable_cancel
  • macros::FT_MOTION_RATE
  • Global variables
  • Mutable variables
  • Saving values to variables
  • Arrays
  • entry_id
  • Vectors
  • PostureModule::set_pos
  • PostureModule::pos_x, PostureModule::pos_y, & PostureModule::pos_z
  • Teleportation (part 1)
  • smash::app::sv_math::rand
  • Using as to change the type of a variable
  • Using sv_math::rand to make crits
  • Programming "modes" akin to monado arts
  • macros::WHOLE_HIT
  • damage!
  • Invincibility, intangibility, super armor
  • Delcaring reflectors
  • Removing reflectors
  • AttackModule::set_power_up
  • AttackModule::set_reaction_mul
  • DamageModule::set_damage_mul
  • DamageModule::set_reaction_mul
  • smash::app::lua_bind::FighterKineticEnergyMotion::set_speed_mul
  • kinetic_motion
  • KineticModule::add_speed
  • KineticModule::clear_speed_all
  • StatusModule::situation_kind
  • Vectors (again)
  • PostureModule::lr
  • PostureModule::set_scale
  • PostureModule::scale
  • Distance formula
  • .sqrt()
  • macros::SLOW_OPPONENT
  • ArticleModule::generate_article
  • ArticleModule::remove_exist
  • ItemModule::have_item
  • VisibilityModule::set_whole
  • ModelModule::set_mesh_visibility
  • Meshes
  • Basic StudioSB Usage
  • macros::EFFECT vs macros::EFFECT_FOLLOW
  • macros::LAST_EFFECT_SET_RATE
  • Teleportaion (part 2)
  • WorkModule::get_int
  • Using get_int to get a player's slot
  • Modulo
  • Slotting movesets
  • Hooking functions other that hitboxes
  • Hooking StatusModule::situation_kind
  • Hooking float and int param accessor hooks to overwrite parameters
  • Single-slotting parameters
  • Declaring global flags
  • WorkModule::on_flag & WorkModule::off_flag
  • sv_battle_object::kind
  • utility::get_category
  • Hooking NOTIFY_LOG_EVENT_COLLISION_HIT to detect hits
  • Hooking sv_animcmd::ATTACK to replace certain parameters of every hitbox
  • l2c_agent
  • Vec arrays
  • Stacks and how to clear, push, and pop them
  • L2CValue::new_num & L2CValue::new_int
  • for loops
  • Downloading and setting up ghidra
  • Using ghidra to get status scripts
  • Introduction to translating status scripts

32. Sounds

  • macros::PLAY_SE
  • ItemModule::set_have_item_visibility
  • ItemModule::set_attach_item_visibility

34. Items

  • Editing item scripts
  • macros::ATTACK_FP
  • WorkModule::get_param_float
  • WorkModule::get_param_int
  • Delcaring functions
  • macros::EFFECT_FOLLOW_arg11
  • StatusModule::status_kind
  • println!
  • Detecting changes in damage
  • WorkModule::get_float
  • Editing fighter_param.prc without smashultimatetools
  • Using parcel
  • Making a config.json
  • Importing a model with StudioSB
  • Editing a model with Blender
  • Adding a material with SSBH Editor
  • Making a config.json
  • Hooking sv_animcmd::AFTER_IMAGE4_ON_arg29
  • Swapping out sword trails in real time
  • Making a config.json
  • More efficient method of slotting
  • Editing motion_list
  • Translating goto and LAB_ functions
  • GroundModule::is_wall_touch_line
  • CancelModule::is_enable_cancel
  • MotionModule::is_end
  • Basic MotionModule::change_motion usage
  • Translating FUN_ functions
  • SUB_STATUSes (source code, not video)
  • .abs()
  • MotionModule::set_rate
  • MotionModule::rate
  • GroundModule::correct
  • KineticModule::change_kinetic
  • WorkModule::inc_int & WorkModule::dec_int
  • Basic MotionModule::change_motion usage
  • Very very basics of fighter specializers
  • Changing projectile hitboxes & effects
  • macros::LAST_EFFECT_SET_COLOR
  • Advanced MotionModule::change_motion usage
  • weapon.fastshift
  • Getting owner_boma
  • sv_kinetic_energy::set_speed
  • Changing the path of a projectile
  • Command Categories
  • FIGHTER_INSTANCE_WORK_ID_FLAG_CAN_SPECIAL_COMMAND
  • fighter.global_table[0x3C]
  • .assign()
  • Migrating from smashline 1 to 2
  • Cloning articles
  • Transplanting effects
  • Using param-xml to edit vl.prc

ssbu-mod-workshop's People

Contributors

lilylavender avatar wuboyth avatar fatherofegg avatar armasher5872 avatar zrksyd avatar

Stargazers

Benjamin Funke avatar  avatar  avatar Matt avatar  avatar NintenHero avatar  avatar CarltonCrazeIsBackIGuess avatar John John avatar

Watchers

 avatar

ssbu-mod-workshop's Issues

Smashline 2 Updates

Todo: Update the repo for Smashline 2

Gonna include Smashline 2 stuff alongside 1. I want the repo to be an easy place to copy-paste code from, so for now, both Smashline 1 and 2 will be included.

Episode List

Any episodes not listed don't need to be updated

  • 2. Basic File Structure
  • 3. Changing Hitbox Data
  • 5. Effects & Backgrounds
  • 6. Porting Moves
  • 8. Damage & Healing
  • 9. Getting Player Inputs
  • 10. Transitioning Into Moves
  • 11. Fighter Frames
  • 12. All About Frames
  • 13. Teleportation & Movement
  • 14. Crits & Randomness
  • 15. Super Armor & Invincibility
  • 16. Reflectors
  • 17. Multipliers
  • 18. Velocity
  • 19. Direction
  • 20. Changing Size
  • 21. Slowing Time
  • 22. Spawning Items & Articles
  • 23. Visibility
  • 24. Slotting Part 1
  • 27. Hit Detection
  • 30. Status Scripts Part 2
  • 31. My Resources Part 2
  • 32. Sounds
  • 33. Expressions
  • 34. Items
  • 35. Getting Parameters
  • 36. Status Kinds
  • 37. Debugging with println
  • 38. Adding Moves
  • 39. Adding A Sword
  • 40. Adding Sword Trails (only example 1)
  • 41. Slotting Part 2
  • 42. Status Scripts Part 3
  • 43. Status Scripts Part 4
  • 44. Projectiles
  • 45. Command Inputs

Fighter to agent changes not present

Episodes 03-27 aren't consistent with the 06/23/23 smashline fighter to agent change made in WuBoy's script dump, leading to possible confusion and less efficient copy-pastes

Video link paths broken

The links in the description for the single-digit episodes and 11 no longer work, fix this after all of s2 is out

Missing Episodes

Episodes 1, 2, 4, 6, and 7 are all not in the repo. This was originally because they didn't have any code examples, but I would like some form of written guide to take the place of some if not all of them at some point. If My Resources 1[4] has anything extra used, also include such for part 2[31].

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.