silkedit 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/commands/journal.rb +3 -3
- data/lib/config/parser.rb +1 -1
- data/lib/silkedit/cheats/merger.rb +7 -3
- data/lib/silkedit/cheats/silksong_cheats.rb +6 -0
- data/lib/silkedit/cheats/silksong_enemyjournal.rb +5 -4
- data/lib/silkedit/config/silksong/cheatdata.yaml +52 -0
- data/lib/silkedit/config/silksong/permasaves.yaml +4 -4
- data/lib/silkedit/savegame/diff.rb +38 -37
- data/lib/silkedit/version.rb +1 -1
- metadata +1 -1
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: a7f3339a4438bd794c4ed860bba4216a0b4bb018fdaa570d72f66e69388e975a
         | 
| 4 | 
            +
              data.tar.gz: d4a14494a7d827fd61c91e48f3b98500fc9c072f5718da7e504a14fc7f0ecb4c
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: dc0d913626bbe4eb89b3b7d684642202ccbe02b73de78d5bfacf6cd11ed034a922e4c8011acb31a57b23c5f84b5d409babf7f91cb888462833783c47c3ac4134
         | 
| 7 | 
            +
              data.tar.gz: 5b4ee244c35db3d4eec09e6202f450f9681edfbec1a2c25d81ae3f27a3e3b724c9924dfbe78c3296cdeb8173ace4c698346943af8305550e67dac7e308e77ce9
         | 
    
        data/lib/commands/journal.rb
    CHANGED
    
    | @@ -1,10 +1,10 @@ | |
| 1 1 | 
             
            Rbcli.command 'journal' do
         | 
| 2 2 | 
             
              description 'Manages the journal of enemy kills'
         | 
| 3 | 
            -
              usage '[ | 
| 3 | 
            +
              usage '[listall|listmissing|complete|killsonly]'
         | 
| 4 4 | 
             
              parameter :showimages, 'Show images of the enemies', short: 'i', type: :bool, default: false
         | 
| 5 5 | 
             
              action do |opts, params, args, config, env|
         | 
| 6 6 | 
             
                command = args.first
         | 
| 7 | 
            -
                if command.nil? || command.empty? || !%w[ | 
| 7 | 
            +
                if command.nil? || command.empty? || !%w[listall listmissing complete killsonly].include?(command)
         | 
| 8 8 | 
             
                  Rbcli.log.error "Must specify an action as one of: listall, listmissing, complete, killsonly"
         | 
| 9 9 | 
             
                  next
         | 
| 10 10 | 
             
                end
         | 
| @@ -27,7 +27,7 @@ Rbcli.command 'journal' do | |
| 27 27 | 
             
                  s.direct_backup
         | 
| 28 28 | 
             
                  s.save_to_dat
         | 
| 29 29 | 
             
                else
         | 
| 30 | 
            -
                   | 
| 30 | 
            +
                  Rbcli.fatal "Unknown command: #{command}", exit_status: 1
         | 
| 31 31 | 
             
                end
         | 
| 32 32 |  | 
| 33 33 | 
             
              end
         | 
    
        data/lib/config/parser.rb
    CHANGED
    
    | @@ -29,6 +29,6 @@ Rbcli::Configurate.cli do | |
| 29 29 | 
             
              #   multi: If set to true, allows the option to be provided multiple times (--param --param, or in short form, -pp). (Default: false)
         | 
| 30 30 | 
             
              #     When using this with a :boolean type, rather than returning `true` or `false`, it will return a count of the number of times the parameter was passed.
         | 
| 31 31 | 
             
              #   permitted: If set to an array, restricts input to the values within that array. (Default: nil (no restrictions))
         | 
| 32 | 
            -
              opt :verbose, "Twice or more enables very-verbose output", multi: true
         | 
| 32 | 
            +
              # opt :verbose, "Twice or more enables very-verbose output", multi: true
         | 
| 33 33 | 
             
              opt :savenum, "A number from 1-4, indicating which game save you'd like to address", short: 's', type: :integer
         | 
| 34 34 | 
             
            end
         | 
| @@ -31,7 +31,7 @@ module Silkedit::Cheat | |
| 31 31 | 
             
                    merge_hash(data[k], cheat[k])
         | 
| 32 32 | 
             
                  elsif should_merge_arrays && cheat[k].is_a?(Array) && data[k].is_a?(Array)
         | 
| 33 33 | 
             
                    if cheat[k][0].is_a?(Hash)
         | 
| 34 | 
            -
                      merge_arrays_by_hash_keys(data[k], cheat[k])
         | 
| 34 | 
            +
                      data[k] = merge_arrays_by_hash_keys(data[k], cheat[k])
         | 
| 35 35 | 
             
                    else
         | 
| 36 36 | 
             
                      data[k].merge!(cheat[k])
         | 
| 37 37 | 
             
                      data[k].uniq!
         | 
| @@ -44,7 +44,11 @@ module Silkedit::Cheat | |
| 44 44 | 
             
              end
         | 
| 45 45 |  | 
| 46 46 | 
             
              def self.merge_arrays_by_hash_keys(data, cheat)
         | 
| 47 | 
            -
                return  | 
| 47 | 
            +
                return data unless data.is_a?(Array) && cheat.is_a?(Array) && cheat.first.is_a?(Hash)
         | 
| 48 | 
            +
                if data.empty?
         | 
| 49 | 
            +
                  data = cheat
         | 
| 50 | 
            +
                  return data
         | 
| 51 | 
            +
                end
         | 
| 48 52 | 
             
                # First determine the primary key(s) for the object
         | 
| 49 53 | 
             
                pkeys = []
         | 
| 50 54 | 
             
                [%w[Name], %w[sceneData ID]].each do |pkey_arr|
         | 
| @@ -58,7 +62,7 @@ module Silkedit::Cheat | |
| 58 62 | 
             
                    data << c
         | 
| 59 63 | 
             
                  end
         | 
| 60 64 | 
             
                end
         | 
| 61 | 
            -
                 | 
| 65 | 
            +
                data
         | 
| 62 66 | 
             
              end
         | 
| 63 67 |  | 
| 64 68 | 
             
              def self.verify_hash(data, reqs)
         | 
| @@ -117,5 +117,11 @@ module Silkedit::Cheat | |
| 117 117 | 
             
                  Rbcli.log.info "Toggling permadeath mode #{toggle ? 'ON' : 'OFF'}", 'CHEATS'
         | 
| 118 118 | 
             
                  @data['playerData']['permadeathMode'] = toggle ? 1 : 0
         | 
| 119 119 | 
             
                end
         | 
| 120 | 
            +
             | 
| 121 | 
            +
                def toggle_fly_mode
         | 
| 122 | 
            +
                  toggle = @data['playerData']['infiniteAirJump'] == false
         | 
| 123 | 
            +
                  Rbcli.log.info "Toggling fly mode #{toggle ? 'ON' : 'OFF'}", 'CHEATS'
         | 
| 124 | 
            +
                  @data['playerData']['infiniteAirJump'] = toggle ? true : false
         | 
| 125 | 
            +
                end
         | 
| 120 126 | 
             
              end
         | 
| 121 127 | 
             
            end
         | 
| @@ -8,8 +8,8 @@ module Silkedit::Cheat | |
| 8 8 | 
             
                def update_journal(should_update_kills_only: true)
         | 
| 9 9 | 
             
                  enemylist = Silkedit::Cheat::SilksongJournaler.module_eval { @enemylist }
         | 
| 10 10 | 
             
                  Rbcli.log.info 'Applying ', 'JOURNAL'
         | 
| 11 | 
            -
                  enemylist['playerData']['EnemyJournalKillData']['list'].each do |known_enemy|
         | 
| 12 | 
            -
                    sleep 0. | 
| 11 | 
            +
                  enemylist['playerData']['EnemyJournalKillData']['list'].sort_by { |known_enemy| known_enemy['Position']}.each do |known_enemy|
         | 
| 12 | 
            +
                    sleep 0.01
         | 
| 13 13 | 
             
                    player_enemy = @data['playerData']['EnemyJournalKillData']['list'].find { |i| i['Name'] == known_enemy['Name'] }
         | 
| 14 14 | 
             
                    self.display_enemy(known_enemy, player_enemy, show_images: false)
         | 
| 15 15 | 
             
                    if player_enemy.nil?
         | 
| @@ -38,7 +38,7 @@ module Silkedit::Cheat | |
| 38 38 |  | 
| 39 39 | 
             
                def enemy_list(only_missing: false, show_images: false)
         | 
| 40 40 | 
             
                  enemylist = Silkedit::Cheat::SilksongJournaler.module_eval { @enemylist }
         | 
| 41 | 
            -
                  enemylist['playerData']['EnemyJournalKillData']['list'].each do |known_enemy|
         | 
| 41 | 
            +
                  enemylist['playerData']['EnemyJournalKillData']['list'].sort_by { |known_enemy| known_enemy['Position']}.each do |known_enemy|
         | 
| 42 42 | 
             
                    player_enemy = @data['playerData']['EnemyJournalKillData']['list'].find { |i| i['Name'] == known_enemy['Name'] }
         | 
| 43 43 | 
             
                    left = player_enemy.nil? ? known_enemy['Record']['Kills'] : known_enemy['Record']['Kills'] - player_enemy['Record']['Kills']
         | 
| 44 44 | 
             
                    left = 0 if left < 0
         | 
| @@ -54,12 +54,13 @@ module Silkedit::Cheat | |
| 54 54 | 
             
                  left = player_enemy.nil? ? known_enemy['Record']['Kills'] : known_enemy['Record']['Kills'] - player_enemy['Record']['Kills']
         | 
| 55 55 | 
             
                  left = 0 if left < 0
         | 
| 56 56 | 
             
                  e_complete = left <= 0 ? '*'.colorize(:cyan) : ' '
         | 
| 57 | 
            +
                  e_number = known_enemy['Position'].to_s.rjust(3)
         | 
| 57 58 | 
             
                  e_name = known_enemy['GameName'].ljust(27).colorize(:blue).bold
         | 
| 58 59 | 
             
                  e_seen = player_enemy.nil? ? 'N'.colorize(:red) : 'Y'.colorize(:green)
         | 
| 59 60 | 
             
                  e_kills = (player_enemy.nil? ? 0 : player_enemy['Record']['Kills']).to_s.rjust(4).colorize(:green)
         | 
| 60 61 | 
             
                  e_req = known_enemy['Record']['Kills'].to_s.rjust(4).colorize(:blue)
         | 
| 61 62 | 
             
                  e_need = left.to_s.rjust(4).colorize(left <= 0 ? :cyan : :red)
         | 
| 62 | 
            -
                  Rbcli.log.info "#{e_complete} #{e_name} Seen? #{e_seen} Kills: #{e_kills} Needed: #{e_req} Left: #{e_need}"
         | 
| 63 | 
            +
                  Rbcli.log.info "#{e_number}. #{e_complete} #{e_name} Seen? #{e_seen} Kills: #{e_kills} Needed: #{e_req} Left: #{e_need}"
         | 
| 63 64 | 
             
                end
         | 
| 64 65 |  | 
| 65 66 | 
             
                def show_enemy_image(name)
         | 
| @@ -770,6 +770,58 @@ cheats: | |
| 770 770 | 
             
                          Amount: 1
         | 
| 771 771 | 
             
                          IsSeenMask: 0
         | 
| 772 772 | 
             
                          AmountWhileHidden: 0
         | 
| 773 | 
            +
              ability_dash:
         | 
| 774 | 
            +
                data:
         | 
| 775 | 
            +
                  playerData:
         | 
| 776 | 
            +
                    hasDash: true
         | 
| 777 | 
            +
                    HasSeenDash: true
         | 
| 778 | 
            +
              ability_doublejump:
         | 
| 779 | 
            +
                data:
         | 
| 780 | 
            +
                  playerData:
         | 
| 781 | 
            +
                    hasDoubleJump: true
         | 
| 782 | 
            +
              ability_drift:
         | 
| 783 | 
            +
                data:
         | 
| 784 | 
            +
                  playerData:
         | 
| 785 | 
            +
                    hasBrolly: true
         | 
| 786 | 
            +
              ability_walljump:
         | 
| 787 | 
            +
                data:
         | 
| 788 | 
            +
                  playerData:
         | 
| 789 | 
            +
                    hasWalljump: true
         | 
| 790 | 
            +
                    HasSeenWalljump: true
         | 
| 791 | 
            +
              ability_needolin:
         | 
| 792 | 
            +
                data:
         | 
| 793 | 
            +
                  playerData:
         | 
| 794 | 
            +
                    hasNeedolin: true
         | 
| 795 | 
            +
                    HasSeenNeedolin: true
         | 
| 796 | 
            +
              ability_needolin_up:
         | 
| 797 | 
            +
                data:
         | 
| 798 | 
            +
                  playerData:
         | 
| 799 | 
            +
                    hasNeedolinMemoryPowerup: true
         | 
| 800 | 
            +
                    HasSeenNeedolinUp: true
         | 
| 801 | 
            +
              ability_needolin_down:
         | 
| 802 | 
            +
                data:
         | 
| 803 | 
            +
                  playerData:
         | 
| 804 | 
            +
                    UnlockedFastTravelTeleport: true
         | 
| 805 | 
            +
                    HasSeenNeedolinDown: true
         | 
| 806 | 
            +
              ability_harpoon:
         | 
| 807 | 
            +
                data:
         | 
| 808 | 
            +
                  playerData:
         | 
| 809 | 
            +
                    hasHarpoonDash: true
         | 
| 810 | 
            +
                    HasSeenHarpoon: true
         | 
| 811 | 
            +
              ability_charge_weapon:
         | 
| 812 | 
            +
                data:
         | 
| 813 | 
            +
                  playerData:
         | 
| 814 | 
            +
                    hasChargeSlash: true
         | 
| 815 | 
            +
              ability_silkspecial:
         | 
| 816 | 
            +
                data:
         | 
| 817 | 
            +
                  playerData:
         | 
| 818 | 
            +
                    hasSilkSpecial: true
         | 
| 819 | 
            +
                    HasSeenSilkSpecial: true
         | 
| 820 | 
            +
              ability_superjump:
         | 
| 821 | 
            +
                data:
         | 
| 822 | 
            +
                  playerData:
         | 
| 823 | 
            +
                    hasSuperJump: true
         | 
| 824 | 
            +
                    HasSeenSuperJump: true
         | 
| 773 825 | 
             
              quill_none:
         | 
| 774 826 | 
             
                data:
         | 
| 775 827 | 
             
                  playerData:
         |