silkedit 0.1.3 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a12669881e8a00f516320116750f2e45aa5e784e10b4cdb68ad7a2b1d5fb1f91
4
- data.tar.gz: 23234270ca141a2f408b1a012d8effb9730e703e2e2444d4c43a2d5d5a77106d
3
+ metadata.gz: a7f3339a4438bd794c4ed860bba4216a0b4bb018fdaa570d72f66e69388e975a
4
+ data.tar.gz: d4a14494a7d827fd61c91e48f3b98500fc9c072f5718da7e504a14fc7f0ecb4c
5
5
  SHA512:
6
- metadata.gz: f66c14e57b5fe04d97bec8bdc2d540e6a95fb29be890007e923cf50ec080118f3aa263e29bc476c8b6e1dcb66d862c2b4a0b642552de93ba80c1ceec63907724
7
- data.tar.gz: a5c2d93939d57933ec9444516b21cf00c62b9f8df2426eb02af671860096bf87b4d2e05c5d0a7ebfd25c9af7b0c6b3aa3f89effdf5547f3326360c3a84d645ef
6
+ metadata.gz: dc0d913626bbe4eb89b3b7d684642202ccbe02b73de78d5bfacf6cd11ed034a922e4c8011acb31a57b23c5f84b5d409babf7f91cb888462833783c47c3ac4134
7
+ data.tar.gz: 5b4ee244c35db3d4eec09e6202f450f9681edfbec1a2c25d81ae3f27a3e3b724c9924dfbe78c3296cdeb8173ace4c698346943af8305550e67dac7e308e77ce9
@@ -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 nil unless data.is_a?(Array) && cheat.is_a?(Array) && data.first.is_a?(Hash)
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
- true
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
@@ -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:
@@ -7,49 +7,50 @@ module Silkedit::Savegame
7
7
 
8
8
  diff = nil
9
9
 
10
- if old.is_a?(Hash)
10
+ if old.is_a?(Hash) || new.is_a?(Hash)
11
11
  diff = {}
12
12
  (old.keys + new.keys).uniq.each do |k|
13
13
  itemdiff = mkdiff(old[k], new[k])
14
14
  diff[k] = itemdiff unless itemdiff.nil? || itemdiff.empty?
15
15
  end
16
- elsif old.is_a?(Array)
16
+ elsif old.is_a?(Array) || new.is_a?(Array)
17
17
  diff = []
18
- if old.first.is_a?(Hash)
19
- if old.first.key?('Name')
20
- keycomps = %w[Name]
21
- elsif old.first.key?('SceneName') && old.first.key?('ID')
22
- keycomps = %w[SceneName ID]
23
- elsif old.first.key?('SceneName') && old.first.key?('EventType')
24
- keycomps = %w[SceneName EventType]
25
- else
26
- keycomps = nil
27
- end
28
- if keycomps.nil?
29
- diff = { old: old.reject { |e| new.include?(e) }, new: new.reject { |e| old.include?(e) } }
30
- else
31
- old.each do |o|
32
- n = new.find { |e| keycomps.map { |k| e[k] == o[k] }.reduce { |a, b| a && b } }
33
- itemdiff = mkdiff(
34
- o.reject { |k, _v| keycomps.include?(k) },
35
- n.nil? ? nil : n.reject { |k, _v| keycomps.include?(k) }
36
- )
37
- next if itemdiff.empty?
38
- newobj = {}
39
- keycomps.each { |k| newobj[k] = o[k] }
40
- diff.append(newobj.merge(itemdiff))
41
- end
42
- new.each do |n|
43
- o = old.find { |e| keycomps.map { |k| e[k] == n[k] }.reduce { |a, b| a && b } }
44
- next unless o.nil?
45
- itemdiff = mkdiff(
46
- nil,
47
- n.reject { |k, _v| keycomps.include?(k) }
48
- )
49
- newobj = {}
50
- keycomps.each { |k| newobj[k] = n[k] }
51
- diff.append(newobj.merge(itemdiff))
18
+ if (old.first.is_a?(Hash) && old.first.key?('Name')) ||
19
+ (new.first.is_a?(Hash) && new.first.key?('Name'))
20
+ keycomps = %w[Name]
21
+ elsif (old.first.is_a?(Hash) && old.first.key?('SceneName') && old.first.key?('ID')) ||
22
+ (new.first.is_a?(Hash) && new.first.key?('SceneName') && new.first.key?('ID'))
23
+ keycomps = %w[SceneName ID]
24
+ elsif (old.first.is_a?(Hash) && old.first.key?('SceneName') && old.first.key?('EventType')) ||
25
+ (new.first.is_a?(Hash) && new.first.key?('SceneName') && new.first.key?('EventType'))
26
+ keycomps = %w[SceneName EventType]
27
+ else
28
+ keycomps = nil
29
+ end
30
+ if keycomps.nil?
31
+ diff = { old: old.reject { |e| new.include?(e) }, new: new.reject { |e| old.include?(e) } }
32
+ diff = nil if diff[:old].empty? && diff[:new].empty?
33
+ else
34
+ old.each do |o|
35
+ n = new.find { |e| keycomps.map { |k| e[k] == o[k] }.reduce { |a, b| a && b } }
36
+ if n.nil?
37
+ diff.append({new: n, old: o})
38
+ next
52
39
  end
40
+ itemdiff = mkdiff(
41
+ o.reject { |k, _v| keycomps.include?(k) },
42
+ n.nil? ? nil : n.reject { |k, _v| keycomps.include?(k) }
43
+ )
44
+ next if itemdiff.empty?
45
+ newobj = {}
46
+ keycomps.each { |k| newobj[k] = o[k] }
47
+ diff.append(newobj.merge(itemdiff))
48
+ end
49
+ new.each do |n|
50
+ o = old.find { |e| keycomps.map { |k| e[k] == n[k] }.reduce { |a, b| a && b } }
51
+ next unless o.nil?
52
+ diff.append({new: n, old: o})
53
+ next
53
54
  end
54
55
  end
55
56
  elsif old != new
@@ -71,7 +72,7 @@ module Silkedit::Savegame
71
72
  if line[i] == '-' && blank_leadup
72
73
  colored_string += line[i].colorize(:yellow)
73
74
  i += 1
74
- elsif line[i] == ':' && blank_leadup
75
+ elsif line[i] == ':' && (blank_leadup || line[0..i-1].sub('-', '').chars.map { |c| c == ' ' }.all?)
75
76
  j = i + line[i+1..-1].index(':')
76
77
  colored_string += line[i..j].colorize(:magenta)
77
78
  i += j - i + 1
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Silkedit
4
- VERSION = "0.1.3"
4
+ VERSION = "0.1.4"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: silkedit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Khoury