smite_ruby 1.4.6 → 1.4.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/Gemfile.lock +3 -3
- data/lib/smite/ability.rb +18 -0
- data/lib/smite/data_transform.rb +5 -15
- data/lib/smite/game.rb +12 -0
- data/lib/smite/god.rb +63 -2
- data/lib/smite/god_stats.rb +169 -80
- data/lib/smite/item.rb +101 -10
- data/lib/smite/item_effect.rb +21 -3
- data/smite_ruby.gemspec +2 -2
- data/spec/game_spec.rb +2 -2
- data/spec/god_spec.rb +62 -0
- data/spec/god_stats_spec.rb +6 -2
- data/spec/item_effect_spec.rb +0 -2
- data/spec/item_spec.rb +26 -1
- data/spec/responses/getgods.json +304 -0
- data/spec/responses/getitems.json +138 -10
- metadata +2 -2
data/lib/smite/item.rb
CHANGED
@@ -3,16 +3,38 @@ module Smite
|
|
3
3
|
|
4
4
|
def initialize(data)
|
5
5
|
super(data)
|
6
|
-
effects
|
7
|
-
@data['
|
8
|
-
@data['
|
6
|
+
effects = @data.delete('item_description')
|
7
|
+
@data['passive'] = effects['SecondaryDescription']
|
8
|
+
@data['description'] = effects['Description']
|
9
|
+
@data['active_effects'] = effects['Menuitems'].map do |eff|
|
9
10
|
ItemEffect.new(device_name, eff)
|
10
11
|
end
|
11
12
|
end
|
12
13
|
|
14
|
+
def self.physical_item_trees
|
15
|
+
[7573, 7827, 7922, 8268, 9624, 9812, 9825, 9830, 9833, 10190, 10662, 11468, 12667, 12671]
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.magical_item_trees
|
19
|
+
[7610, 8247, 9631, 9847, 9849, 9855, 9858, 9860, 10603, 11123]
|
20
|
+
end
|
21
|
+
|
22
|
+
def item_tree_root
|
23
|
+
return @root unless @root.nil?
|
24
|
+
@root = self
|
25
|
+
child_id = @root.child_item_id
|
26
|
+
|
27
|
+
until child_id == 0
|
28
|
+
@root = Smite::Game.item(child_id)
|
29
|
+
child_id = @root.child_item_id
|
30
|
+
end
|
31
|
+
@root
|
32
|
+
end
|
33
|
+
|
13
34
|
def active?
|
14
|
-
type == 'Active'
|
35
|
+
type == 'Active' || type == 'Relic'
|
15
36
|
end
|
37
|
+
alias_method :relic?, :active?
|
16
38
|
|
17
39
|
def consumable?
|
18
40
|
type == 'Consumable'
|
@@ -26,24 +48,93 @@ module Smite
|
|
26
48
|
starting_item
|
27
49
|
end
|
28
50
|
|
51
|
+
def passive?
|
52
|
+
!passive.empty?
|
53
|
+
end
|
54
|
+
|
55
|
+
def aura?
|
56
|
+
!!(passive =~ /AURA/)
|
57
|
+
end
|
58
|
+
|
59
|
+
def stacking?(perma_stacks = false)
|
60
|
+
return false unless passive?
|
61
|
+
if perma_stacks
|
62
|
+
!!(passive =~ /(per|for each).+?kill/i)
|
63
|
+
else
|
64
|
+
!!(passive =~ /stack/i)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def max_stacks
|
69
|
+
@max_stacks = 1 unless stacking?
|
70
|
+
return @max_stacks unless @max_stacks.nil?
|
71
|
+
|
72
|
+
@max_stacks ||= passive.match(/max\.?.+?(\d+)/i)[1].to_i
|
73
|
+
end
|
74
|
+
|
75
|
+
def cost
|
76
|
+
return @cost unless @cost.nil?
|
77
|
+
@cost = price
|
78
|
+
child_id = child_item_id
|
79
|
+
until child_id == 0
|
80
|
+
child = Smite::Game.item(child_id)
|
81
|
+
@cost += child.price
|
82
|
+
child_id = child.child_item_id
|
83
|
+
end
|
84
|
+
@cost
|
85
|
+
end
|
86
|
+
|
87
|
+
def tier
|
88
|
+
item_tier
|
89
|
+
end
|
90
|
+
|
29
91
|
def name
|
30
92
|
device_name
|
31
93
|
end
|
32
94
|
|
33
95
|
def physical?
|
34
|
-
@physical ||= !
|
35
|
-
eff =~ /magic(al)?_(power|pen)/
|
36
|
-
end
|
96
|
+
@physical ||= !Smite::Item.magical_item_trees.include?(item_tree_root.item_id)
|
37
97
|
end
|
38
98
|
|
39
99
|
def magic?
|
40
|
-
@magic ||= !
|
41
|
-
eff =~ /physical_(power|pen)/
|
42
|
-
end
|
100
|
+
@magic ||= !Smite::Item.physical_item_trees.include?(item_tree_root.item_id)
|
43
101
|
end
|
102
|
+
alias_method :magical?, :magic?
|
44
103
|
|
45
104
|
def inspect
|
46
105
|
"#<Smite::Item #{item_id} '#{device_name}'>"
|
47
106
|
end
|
107
|
+
|
108
|
+
def effects
|
109
|
+
active_effects + passive_effects
|
110
|
+
end
|
111
|
+
|
112
|
+
def passive_effects
|
113
|
+
@passive_effects = [] unless passive?
|
114
|
+
return @passive_effects unless @passive_effects.nil?
|
115
|
+
|
116
|
+
fx = Smite::Game.item_effects + ['magical_protection', 'lifesteal']
|
117
|
+
fx = fx.map { |e| e.tr('_', ' ') + "s?" }.join('\b|')
|
118
|
+
amt = '(\+?[\.\d]+%?)'
|
119
|
+
|
120
|
+
r1 = /gain #{amt} (#{fx}\b)(?: and #{amt} (#{fx}\b))?/i
|
121
|
+
r2 = /increas(?:es?|ing)?(?: your)? (#{fx}\b) by #{amt}(?: and (#{fx}\b) by #{amt})?/i
|
122
|
+
r3 = /grant(?:s you|ing)? #{amt} (#{fx}\b) and #{amt} (#{fx}\b)/i
|
123
|
+
r4 = /your (#{fx}\b) increases by #{amt}/i
|
124
|
+
|
125
|
+
scanned = [r1,r2,r3,r4].inject([]) { |arr, regex| arr << (passive.scan(regex)[0]||[]).compact }
|
126
|
+
scanned = scanned.reject(&:empty?)
|
127
|
+
|
128
|
+
scanned = scanned.map do |e|
|
129
|
+
e.each_slice(2).to_a.map do |a|
|
130
|
+
a = a.minmax
|
131
|
+
a[1] = a[1][-1] == 's' ? a[1][0...-1] : a[1]
|
132
|
+
{ 'Description' => a[1], 'Value' => a[0] }
|
133
|
+
end
|
134
|
+
end
|
135
|
+
@passive_effects = scanned.flatten.map do |effect_data|
|
136
|
+
ItemEffect.new(name, effect_data)
|
137
|
+
end
|
138
|
+
end
|
48
139
|
end
|
49
140
|
end
|
data/lib/smite/item_effect.rb
CHANGED
@@ -1,16 +1,34 @@
|
|
1
1
|
module Smite
|
2
|
-
class ItemEffect
|
2
|
+
class ItemEffect
|
3
|
+
attr_accessor :attribute, :amount, :percentage
|
3
4
|
attr_reader :device_name
|
4
5
|
|
5
|
-
def initialize(item, data)
|
6
|
+
def initialize(item, data = {})
|
6
7
|
@device_name = item
|
7
|
-
|
8
|
+
return if data.empty?
|
9
|
+
|
10
|
+
effect = data.delete('Description').tr(' ','')
|
11
|
+
effect = ActiveSupport::Inflector.underscore(effect)
|
12
|
+
|
13
|
+
@attribute = effect
|
14
|
+
@attribute = 'magic_protection' if effect == 'magical_protection'
|
15
|
+
@attribute = 'magical_power' if effect == 'magic_power'
|
16
|
+
|
17
|
+
value = data.delete('Value')
|
18
|
+
@percentage = value[/%/]
|
19
|
+
|
20
|
+
value = value.tr('+', '').to_i
|
21
|
+
@amount = value
|
8
22
|
end
|
9
23
|
|
10
24
|
def percentage?
|
11
25
|
!percentage.nil?
|
12
26
|
end
|
13
27
|
|
28
|
+
def to_h
|
29
|
+
{ attribute => { amount: amount, percentage: percentage? } }
|
30
|
+
end
|
31
|
+
|
14
32
|
def inspect
|
15
33
|
"#<Smite::ItemEffect '#{device_name}' #{attribute} +#{amount}#{percentage}>"
|
16
34
|
end
|
data/smite_ruby.gemspec
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
$:.push File.expand_path("../lib", __FILE__)
|
2
2
|
Gem::Specification.new do |s|
|
3
3
|
s.name = 'smite_ruby'
|
4
|
-
s.version = '1.4.
|
5
|
-
s.date = '2016-02-
|
4
|
+
s.version = '1.4.9'
|
5
|
+
s.date = '2016-02-18'
|
6
6
|
s.summary = 'Ruby Smite API'
|
7
7
|
s.description = 'Ruby Client for consuming the Smite API'
|
8
8
|
s.authors = ['NcUltimate']
|
data/spec/game_spec.rb
CHANGED
@@ -24,7 +24,7 @@ RSpec.describe Smite::Game do
|
|
24
24
|
|
25
25
|
describe '#devices' do
|
26
26
|
it 'returns a list of Smite::Items' do
|
27
|
-
expect(Smite::Game.devices.count).to eq(
|
27
|
+
expect(Smite::Game.devices.count).to eq(13)
|
28
28
|
Smite::Game.devices.each do |device|
|
29
29
|
expect(device.class).to eq(Smite::Item)
|
30
30
|
end
|
@@ -81,7 +81,7 @@ RSpec.describe Smite::Game do
|
|
81
81
|
|
82
82
|
describe '#gods' do
|
83
83
|
it 'returns a list of Smite::God' do
|
84
|
-
expect(Smite::Game.gods.count).to eq(
|
84
|
+
expect(Smite::Game.gods.count).to eq(5)
|
85
85
|
Smite::Game.gods.each do |god|
|
86
86
|
expect(god.class).to eq(Smite::God)
|
87
87
|
end
|
data/spec/god_spec.rb
CHANGED
@@ -4,6 +4,8 @@ RSpec.describe Smite::God do
|
|
4
4
|
let(:osiris) { Smite::Game.god('Osiris') }
|
5
5
|
let(:sobek) { Smite::Game.god('Sobek') }
|
6
6
|
let(:agni) { Smite::Game.god('Agni') }
|
7
|
+
let(:rama) { Smite::Game.god('Rama') }
|
8
|
+
let(:loki) { Smite::Game.god('Loki') }
|
7
9
|
let(:smite_obj) { agni }
|
8
10
|
|
9
11
|
describe '#on_free_rotation?' do
|
@@ -51,5 +53,65 @@ RSpec.describe Smite::God do
|
|
51
53
|
end
|
52
54
|
end
|
53
55
|
|
56
|
+
describe '#hunter?' do
|
57
|
+
it 'returns true if the god is a hunter' do
|
58
|
+
expect(rama.hunter?).to eq(true)
|
59
|
+
end
|
60
|
+
it 'returns false if the god is not a hunter' do
|
61
|
+
expect(osiris.hunter?).to eq(false)
|
62
|
+
expect(agni.hunter?).to eq(false)
|
63
|
+
expect(loki.hunter?).to eq(false)
|
64
|
+
expect(sobek.hunter?).to eq(false)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
describe '#assassin?' do
|
69
|
+
it 'returns true if the god is an assassin' do
|
70
|
+
expect(loki.assassin?).to eq(true)
|
71
|
+
end
|
72
|
+
it 'returns false if the god is not an assassin' do
|
73
|
+
expect(osiris.assassin?).to eq(false)
|
74
|
+
expect(agni.assassin?).to eq(false)
|
75
|
+
expect(rama.assassin?).to eq(false)
|
76
|
+
expect(sobek.assassin?).to eq(false)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
describe '#guardian?' do
|
81
|
+
it 'returns true if the god is a guardian' do
|
82
|
+
expect(sobek.guardian?).to eq(true)
|
83
|
+
end
|
84
|
+
it 'returns false if the god is not a guardian' do
|
85
|
+
expect(osiris.guardian?).to eq(false)
|
86
|
+
expect(agni.guardian?).to eq(false)
|
87
|
+
expect(loki.guardian?).to eq(false)
|
88
|
+
expect(rama.guardian?).to eq(false)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
describe '#mage?' do
|
93
|
+
it 'returns true if the god is a mage' do
|
94
|
+
expect(agni.mage?).to eq(true)
|
95
|
+
end
|
96
|
+
it 'returns false if the god is not a mage' do
|
97
|
+
expect(osiris.mage?).to eq(false)
|
98
|
+
expect(rama.mage?).to eq(false)
|
99
|
+
expect(loki.mage?).to eq(false)
|
100
|
+
expect(sobek.mage?).to eq(false)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
describe '#warrior?' do
|
105
|
+
it 'returns true if the god is a warrior' do
|
106
|
+
expect(osiris.warrior?).to eq(true)
|
107
|
+
end
|
108
|
+
it 'returns false if the god is not a warrior' do
|
109
|
+
expect(rama.warrior?).to eq(false)
|
110
|
+
expect(agni.warrior?).to eq(false)
|
111
|
+
expect(loki.warrior?).to eq(false)
|
112
|
+
expect(sobek.warrior?).to eq(false)
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
54
116
|
it_behaves_like 'a Smite::Object'
|
55
117
|
end
|
data/spec/god_stats_spec.rb
CHANGED
@@ -21,6 +21,7 @@ RSpec.describe Smite::GodStats do
|
|
21
21
|
it 'returns a new instance of GodStats at the given level' do
|
22
22
|
new_stats = smite_obj.at_level(10)
|
23
23
|
expect(new_stats.level).to eq(9)
|
24
|
+
expect(new_stats.items).to eq(smite_obj.items)
|
24
25
|
end
|
25
26
|
end
|
26
27
|
|
@@ -28,16 +29,19 @@ RSpec.describe Smite::GodStats do
|
|
28
29
|
it 'returns a new instance of GodStats with the given items' do
|
29
30
|
new_stats = smite_obj.with_items(items)
|
30
31
|
expect(new_stats.items).to eq(items)
|
32
|
+
expect(new_stats.level).to eq(smite_obj.level)
|
31
33
|
end
|
32
34
|
end
|
33
35
|
|
34
36
|
def scaling_calc(stats, attribute)
|
35
|
-
|
37
|
+
flat_from_items = stats.bonus_from_items[:flat][attribute.to_sym]
|
38
|
+
perc_from_items = stats.bonus_from_items[:perc][attribute.to_sym]
|
36
39
|
base = stats.data[attribute]
|
37
40
|
scaling = stats.send("#{attribute}_per_level".to_sym).to_f
|
38
41
|
scaling *= stats.level.to_f
|
39
42
|
|
40
|
-
|
43
|
+
ret = ((flat_from_items + base + scaling) * (1 + perc_from_items)).round(2)
|
44
|
+
attribute =~ /5|attack/ ? ret : ret.round
|
41
45
|
end
|
42
46
|
|
43
47
|
%w[ movement_speed health mana
|
data/spec/item_effect_spec.rb
CHANGED
data/spec/item_spec.rb
CHANGED
@@ -3,9 +3,10 @@ require 'spec_helper'
|
|
3
3
|
RSpec.describe Smite::Item do
|
4
4
|
let(:vampiric_shroud) { Smite::Game.item("Vampiric Shroud") }
|
5
5
|
let(:shifters_shield) { Smite::Game.item("Shifter's Shield") }
|
6
|
+
let(:iron_mail) { Smite::Game.item('Iron Mail') }
|
6
7
|
let(:soul_reaver) { Smite::Game.item('Soul Reaver') }
|
7
8
|
let(:sovereignty) { Smite::Game.item('Sovereignty') }
|
8
|
-
let(:aegis) { Smite::Game.item('
|
9
|
+
let(:aegis) { Smite::Game.item('Sanctuary') }
|
9
10
|
let(:potion) { Smite::Game.item('Potion of Magical Might') }
|
10
11
|
let(:smite_obj) { sovereignty }
|
11
12
|
|
@@ -79,5 +80,29 @@ RSpec.describe Smite::Item do
|
|
79
80
|
end
|
80
81
|
end
|
81
82
|
|
83
|
+
describe '#passive?' do
|
84
|
+
it 'returns true if the item has a passive' do
|
85
|
+
expect(soul_reaver.passive?).to eq(true)
|
86
|
+
expect(sovereignty.passive?).to eq(true)
|
87
|
+
expect(aegis.passive?).to eq(true)
|
88
|
+
expect(potion.passive?).to eq(true)
|
89
|
+
end
|
90
|
+
it 'returns false if the item does not have a passive' do
|
91
|
+
expect(iron_mail.passive?).to eq(false)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
describe '#aura?' do
|
96
|
+
it 'returns true if the item give off an aura' do
|
97
|
+
expect(sovereignty.aura?).to eq(true)
|
98
|
+
end
|
99
|
+
it 'returns false if the item does not have a passive' do
|
100
|
+
expect(aegis.aura?).to eq(false)
|
101
|
+
expect(potion.aura?).to eq(false)
|
102
|
+
expect(soul_reaver.aura?).to eq(false)
|
103
|
+
expect(iron_mail.aura?).to eq(false)
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
82
107
|
it_behaves_like 'a Smite::Object'
|
83
108
|
end
|
data/spec/responses/getgods.json
CHANGED
@@ -457,5 +457,309 @@
|
|
457
457
|
"id" : 2000,
|
458
458
|
"latestGod" : "n",
|
459
459
|
"ret_msg" : null
|
460
|
+
},
|
461
|
+
{
|
462
|
+
"Ability1" : "Vanish",
|
463
|
+
"Ability2" : "Decoy",
|
464
|
+
"Ability3" : "Aimed Strike",
|
465
|
+
"Ability4" : "Assassinate",
|
466
|
+
"Ability5" : "Behind You!",
|
467
|
+
"AbilityId1" : 8425,
|
468
|
+
"AbilityId2" : 8427,
|
469
|
+
"AbilityId3" : 8464,
|
470
|
+
"AbilityId4" : 8453,
|
471
|
+
"AbilityId5" : 8412,
|
472
|
+
"Ability_1" :
|
473
|
+
{"Description" :
|
474
|
+
{"itemDescription" :
|
475
|
+
{"cooldown" : "15s",
|
476
|
+
"cost" : "70/75/80/85/90",
|
477
|
+
"description" :
|
478
|
+
"Loki disappears in a puff of smoke. While invisible, he moves faster, removes and gains immunity to Slow effects, and takes 25% less damage. His next basic attack from stealth (or for 2s after) applies a bleed to his target, dealing damage every .5s and reveals Loki.",
|
479
|
+
"menuitems" :
|
480
|
+
[{"description" : "Ability:", "value" : "Melee Target"},
|
481
|
+
{"description" : "Affects:", "value" : "Enemy"},
|
482
|
+
{"description" : "Damage:", "value" : "Physical"}],
|
483
|
+
"rankitems" :
|
484
|
+
[{"description" : "Damage per Tick:", "value" : "30/45/60/75/90 (+25% of your physical power)"},
|
485
|
+
{"description" : "Damage Duration:", "value" : "2s"},
|
486
|
+
{"description" : "Stealth Duration:", "value" : "4s"},
|
487
|
+
{"description" : "Stealth Movement Speed:", "value" : "35%"}],
|
488
|
+
"secondaryDescription" : ""}},
|
489
|
+
"Id" : 8425,
|
490
|
+
"Summary" : "Vanish",
|
491
|
+
"URL" : "https://hzweb.hi-rezgame.net/smite-web/wp-content/uploads/2015/05/1797_8425.jpg"},
|
492
|
+
"Ability_2" :
|
493
|
+
{"Description" :
|
494
|
+
{"itemDescription" :
|
495
|
+
{"cooldown" : "14s",
|
496
|
+
"cost" : "60/65/70/75/80",
|
497
|
+
"description" :
|
498
|
+
"Loki spawns a decoy version of himself that taunts all nearby enemy minions. After a short time, the decoy explodes dealing damage to all enemies in the radius.",
|
499
|
+
"menuitems" :
|
500
|
+
[{"description" : "Ability:", "value" : "Ground Target"},
|
501
|
+
{"description" : "Affects:", "value" : "Enemy"},
|
502
|
+
{"description" : "Damage:", "value" : "Physical"},
|
503
|
+
{"description" : "Radius:", "value" : "20"}],
|
504
|
+
"rankitems" :
|
505
|
+
[{"description" : "Damage:", "value" : "75/125/175/225/275 (+100% of your physical power)"},
|
506
|
+
{"description" : "Decoy Lifetime:", "value" : "3s"}],
|
507
|
+
"secondaryDescription" : ""}},
|
508
|
+
"Id" : 8427,
|
509
|
+
"Summary" : "Decoy",
|
510
|
+
"URL" : "https://hzweb.hi-rezgame.net/smite-web/wp-content/uploads/2015/05/1797_8427.jpg"},
|
511
|
+
"Ability_3" :
|
512
|
+
{"Description" :
|
513
|
+
{"itemDescription" :
|
514
|
+
{"cooldown" : "12/11/10/9/8s",
|
515
|
+
"cost" : "50",
|
516
|
+
"description" :
|
517
|
+
"Upon activation, Loki's next basic attack does additional damage within a short time. The enemy hit is also slowed.",
|
518
|
+
"menuitems" :
|
519
|
+
[{"description" : "Ability:", "value" : "Buff"},
|
520
|
+
{"description" : "Affects:", "value" : "Self"},
|
521
|
+
{"description" : "Damage:", "value" : "Physical"}],
|
522
|
+
"rankitems" :
|
523
|
+
[{"description" : "Damage:", "value" : "60/100/140/180/220 (+100% of your physical power)"},
|
524
|
+
{"description" : "Buff Lifetime:", "value" : "5s"},
|
525
|
+
{"description" : "Slow:", "value" : "25%"},
|
526
|
+
{"description" : "Slow Duration:", "value" : "3s"}],
|
527
|
+
"secondaryDescription" : ""}},
|
528
|
+
"Id" : 8464,
|
529
|
+
"Summary" : "Aimed Strike",
|
530
|
+
"URL" : "https://hzweb.hi-rezgame.net/smite-web/wp-content/uploads/2015/05/1797_8464.jpg"},
|
531
|
+
"Ability_4" :
|
532
|
+
{"Description" :
|
533
|
+
{"itemDescription" :
|
534
|
+
{"cooldown" : "90s",
|
535
|
+
"cost" : "100",
|
536
|
+
"description" :
|
537
|
+
"Upon activation, Loki teleports to his ground target location. If an enemy god is within the radius, Loki will backstab that target doing damage and stunning them.",
|
538
|
+
"menuitems" :
|
539
|
+
[{"description" : "Ability:", "value" : "Teleport"},
|
540
|
+
{"description" : "Affects:", "value" : "Enemy Gods"},
|
541
|
+
{"description" : "Damage:", "value" : "Physical"}],
|
542
|
+
"rankitems" :
|
543
|
+
[{"description" : "Damage:", "value" : "150/225/300/375/450 (+120% of your physical power)"},
|
544
|
+
{"description" : "Stun:", "value" : "1s"}],
|
545
|
+
"secondaryDescription" : ""}},
|
546
|
+
"Id" : 8453,
|
547
|
+
"Summary" : "Assassinate",
|
548
|
+
"URL" : "https://hzweb.hi-rezgame.net/smite-web/wp-content/uploads/2015/05/1797_8453.jpg"},
|
549
|
+
"Ability_5" :
|
550
|
+
{"Description" :
|
551
|
+
{"itemDescription" :
|
552
|
+
{"cooldown" : "",
|
553
|
+
"cost" : "",
|
554
|
+
"description" :
|
555
|
+
"Loki deals more damage from his basic attacks when hitting enemies from behind. His basic attacks also utilize a five swing progressive chain.",
|
556
|
+
"menuitems" : [{"description" : "Ability:", "value" : "Buff"}, {"description" : "Affects:", "value" : "Self"}],
|
557
|
+
"rankitems" : [{"description" : "Bonus Damage:", "value" : "20%"}],
|
558
|
+
"secondaryDescription" : ""}},
|
559
|
+
"Id" : 8412,
|
560
|
+
"Summary" : "Behind You!",
|
561
|
+
"URL" : "https://hzweb.hi-rezgame.net/smite-web/wp-content/uploads/2015/05/1797_8412.jpg"},
|
562
|
+
"AttackSpeed" : 1,
|
563
|
+
"AttackSpeedPerLevel" : 0.019,
|
564
|
+
"Cons" : "",
|
565
|
+
"HP5PerLevel" : 0.7,
|
566
|
+
"Health" : 395,
|
567
|
+
"HealthPerFive" : 8,
|
568
|
+
"HealthPerLevel" : 75,
|
569
|
+
"Lore" :
|
570
|
+
"Villain. It’s a word used to describe those that break the rules, that take what they want, and care nothing for those hurt along the way. Loki, the trickster God, would say villainy is nothing more than a point of view.\\n\\nThe point of view of fools too mindless to seize opportunity.\\n\\nOf course, with Loki now on the loose, the implications are dire. The end of times may be at hand. The final battle, Ragnarok, possibly on the horizon, for it was foretold that Loki would break free of his prison and herald the horrific final battle that would leave the Gods slain, the heavens sundered, and the world in ashes. None are more eager for that time of chaos than Loki.\\n\\nBefore his confinement, Loki’s malicious mischief managed to affect every God in ways both beneficial and terrible. Yet Loki’s most heinous act was in the death of the God of light, Baldr.\\n\\nBaldr’s prophetic dreams showcased his own death. Fearful for her son, Frigg, forced all objects of the world to swear never to harm him. All save mistletoe. Cruelly amused, Loki forged a spear from the plant and provided it to Baldr’s brother Hodr. The Gods had a new favorite game, hurling objects at Baldr and laughing as they harmlessly ricocheted. So Hodr threw the spear, but, to everyone’s horror Baldr was impaled. Hel agreed to release Baldr from the underworld if all creatures of the world mourned the God of Light. And all did, save one crone who refused. So Baldr died.\\n\\nWhen it was discovered the crone was Loki in disguise, the furious Gods bound him in entrails and hung a venomous serpent overhead. Loki’s wife, Sigyn, collected the dripping venom in a bowl, but when she was forced to empty it, Loki was struck, causing such anguish his thrashing would shake the world.\\n\\nBut now Loki is free and already wreaking havoc. If the prophetic Volva are correct, and they always are, then the end of all things has finally come.",
|
571
|
+
"MP5PerLevel" : 0.35,
|
572
|
+
"MagicProtection" : 30,
|
573
|
+
"MagicProtectionPerLevel" : 0.9,
|
574
|
+
"MagicalPower" : 0,
|
575
|
+
"MagicalPowerPerLevel" : 0,
|
576
|
+
"Mana" : 210,
|
577
|
+
"ManaPerFive" : 4.2,
|
578
|
+
"ManaPerLevel" : 35,
|
579
|
+
"Name" : "Loki",
|
580
|
+
"OnFreeRotation" : "",
|
581
|
+
"Pantheon" : "Norse",
|
582
|
+
"PhysicalPower" : 38,
|
583
|
+
"PhysicalPowerPerLevel" : 2.4,
|
584
|
+
"PhysicalProtection" : 11,
|
585
|
+
"PhysicalProtectionPerLevel" : 2.9,
|
586
|
+
"Pros" : " High Single Target Damage",
|
587
|
+
"Roles" : " Assassin",
|
588
|
+
"Speed" : 375,
|
589
|
+
"Title" : "The Trickster God",
|
590
|
+
"Type" : " Melee, Physical",
|
591
|
+
"abilityDescription1" : {},
|
592
|
+
"abilityDescription2" : {},
|
593
|
+
"abilityDescription3" : {},
|
594
|
+
"abilityDescription4" : {},
|
595
|
+
"abilityDescription5" : {},
|
596
|
+
"basicAttack" :
|
597
|
+
{"itemDescription" :
|
598
|
+
{"cooldown" : "",
|
599
|
+
"cost" : "",
|
600
|
+
"description" : "",
|
601
|
+
"menuitems" :
|
602
|
+
[{"description" : "Damage:", "value" : "38 + 2.4/Lvl (+100% of Physical Power)"},
|
603
|
+
{"description" : "Progression:", "value" : "1/.5/.5/.5/1.5x damage and swing time"}],
|
604
|
+
"rankitems" : [],
|
605
|
+
"secondaryDescription" : ""}},
|
606
|
+
"godAbility1_URL" : "https://hzweb.hi-rezgame.net/smite-web/wp-content/uploads/2015/05/1797_8425.jpg",
|
607
|
+
"godAbility2_URL" : "https://hzweb.hi-rezgame.net/smite-web/wp-content/uploads/2015/05/1797_8427.jpg",
|
608
|
+
"godAbility3_URL" : "https://hzweb.hi-rezgame.net/smite-web/wp-content/uploads/2015/05/1797_8464.jpg",
|
609
|
+
"godAbility4_URL" : "https://hzweb.hi-rezgame.net/smite-web/wp-content/uploads/2015/05/1797_8453.jpg",
|
610
|
+
"godAbility5_URL" : "https://hzweb.hi-rezgame.net/smite-web/wp-content/uploads/2015/05/1797_8412.jpg",
|
611
|
+
"godCard_URL" : "https://hzweb.hi-rezgame.net/smite-web/wp-content/uploads/2015/05/Loki_Default_Card.jpg",
|
612
|
+
"godIcon_URL" : "http://hirezstudios.blob.core.windows.net/sitefinity/smite-god-icons/1797.jpg",
|
613
|
+
"id" : 1797,
|
614
|
+
"latestGod" : "n",
|
615
|
+
"ret_msg" : null
|
616
|
+
},
|
617
|
+
{
|
618
|
+
"Ability1" : "Astral Strike",
|
619
|
+
"Ability2" : "Pick Me Up",
|
620
|
+
"Ability3" : "Rolling Assault",
|
621
|
+
"Ability4" : "Astral Barrage",
|
622
|
+
"Ability5" : "Astral Quiver",
|
623
|
+
"AbilityId1" : 10160,
|
624
|
+
"AbilityId2" : 10162,
|
625
|
+
"AbilityId3" : 10038,
|
626
|
+
"AbilityId4" : 10116,
|
627
|
+
"AbilityId5" : 10144,
|
628
|
+
"Ability_1" :
|
629
|
+
{"Description" :
|
630
|
+
{"itemDescription" :
|
631
|
+
{"cooldown" : "",
|
632
|
+
"cost" : "25 + 1 arrow per shot",
|
633
|
+
"description" :
|
634
|
+
"Rama switches to a more powerful arrow that pierces and slows enemies. This ability consumes 1 of Rama's Astral Arrows and deals bonus damage with every shot. Damage from this ability is reduced to 75% for each enemy hit after the first. Rama cannot toggle this ability if he has no Astral Arrows.\n\n The slow can be stacked up to 3 times.",
|
635
|
+
"menuitems" :
|
636
|
+
[{"description" : "Ability:", "value" : "Buff"},
|
637
|
+
{"description" : "Affects:", "value" : "Self"},
|
638
|
+
{"description" : "Damage:", "value" : "Physical"}],
|
639
|
+
"rankitems" :
|
640
|
+
[{"description" : "Slow %:", "value" : "10% "},
|
641
|
+
{"description" : "Time Slowed:", "value" : "1s"},
|
642
|
+
{"description" : "Bonus Damage:", "value" : "10/20/30/40/50"}],
|
643
|
+
"secondaryDescription" : ""}},
|
644
|
+
"Id" : 10160,
|
645
|
+
"Summary" : "Astral Strike",
|
646
|
+
"URL" : "https://hzweb.hi-rezgame.net/smite-web/wp-content/uploads/2015/05/2002_10160.jpg"},
|
647
|
+
"Ability_2" :
|
648
|
+
{"Description" :
|
649
|
+
{"itemDescription" :
|
650
|
+
{"cooldown" : "15/14/13/12/11s",
|
651
|
+
"cost" : "80/85/90/95/100",
|
652
|
+
"description" :
|
653
|
+
"Passive: Any time an enemy is hit by an Astral Arrow there is a % chance that an Astral Arrow pickup will appear on the ground (Only procs on the first enemy hit by Astral Strike). The pickup adds one Arrow to Rama's Astral Arrow count.\n\nActive: Rama gains increased attack speed.\r\n",
|
654
|
+
"menuitems" : [{"description" : "Ability:", "value" : "Buff, Pickup"}, {"description" : "Affects:", "value" : "Self"}],
|
655
|
+
"rankitems" :
|
656
|
+
[{"description" : "Drop chance for Arrow Pickup:", "value" : "10/20/30/40/50% "},
|
657
|
+
{"description" : "Attack Speed Increase:", "value" : "30/35/40/45/50% for 5s."}],
|
658
|
+
"secondaryDescription" : ""}},
|
659
|
+
"Id" : 10162,
|
660
|
+
"Summary" : "Pick Me Up",
|
661
|
+
"URL" : "https://hzweb.hi-rezgame.net/smite-web/wp-content/uploads/2015/05/2002_10162.jpg"},
|
662
|
+
"Ability_3" :
|
663
|
+
{"Description" :
|
664
|
+
{"itemDescription" :
|
665
|
+
{"cooldown" : "12/11/10/9/8s",
|
666
|
+
"cost" : "70/75/80/85/90",
|
667
|
+
"description" :
|
668
|
+
"Rama performs a roll in the direction he is currently traveling. After performing a dodge roll, for 5s Rama's next basic attack will consume an astral arrow that cripples the target and deals bonus damage. Rama incurs no movement penalty during this shot. ",
|
669
|
+
"menuitems" :
|
670
|
+
[{"description" : "Ability:", "value" : "Dash"},
|
671
|
+
{"description" : "Affects:", "value" : "Enemies"},
|
672
|
+
{"description" : "Damage:", "value" : "Physical"}],
|
673
|
+
"rankitems" :
|
674
|
+
[{"description" : "Cripple Duration:", "value" : "1/1.25/1.5/1.75/2s"},
|
675
|
+
{"description" : "Bonus Damage:", "value" : "20/40/60/80/100 "}],
|
676
|
+
"secondaryDescription" : ""}},
|
677
|
+
"Id" : 10038,
|
678
|
+
"Summary" : "Rolling Assault",
|
679
|
+
"URL" : "https://hzweb.hi-rezgame.net/smite-web/wp-content/uploads/2015/05/2002_10038.jpg"},
|
680
|
+
"Ability_4" :
|
681
|
+
{"Description" :
|
682
|
+
{"itemDescription" :
|
683
|
+
{"cooldown" : "90s",
|
684
|
+
"cost" : "100/110/120/130/140",
|
685
|
+
"description" :
|
686
|
+
"Rama launches into the air and shoots 3 powerful arrows at the ground, each successive shot increasing in damage: 50%, 75%, 100% and decreasing in AOE size: 30, 20, 15.",
|
687
|
+
"menuitems" :
|
688
|
+
[{"description" : "Ability:", "value" : "AOE"},
|
689
|
+
{"description" : "Affects:", "value" : "Enemy"},
|
690
|
+
{"description" : "Damage:", "value" : "Physical"},
|
691
|
+
{"description" : "Radius:", "value" : "30/20/15"}],
|
692
|
+
"rankitems" : [{"description" : "Damage:", "value" : "200/300/400/500/600 (+60% of your physical power)"}],
|
693
|
+
"secondaryDescription" : ""}},
|
694
|
+
"Id" : 10116,
|
695
|
+
"Summary" : "Astral Barrage",
|
696
|
+
"URL" : "https://hzweb.hi-rezgame.net/smite-web/wp-content/uploads/2015/05/2002_10116.jpg"},
|
697
|
+
"Ability_5" :
|
698
|
+
{"Description" :
|
699
|
+
{"itemDescription" :
|
700
|
+
{"cooldown" : "",
|
701
|
+
"cost" : "",
|
702
|
+
"description" :
|
703
|
+
"Rama's Astral Quiver generates an Astral Arrow every 15s. Also, every basic attack that Rama lands will reduce the amount of time to generate an arrow by 2s. Astral Arrows are used with his other abilities. ",
|
704
|
+
"menuitems" : [{"description" : "Affects:", "value" : "Self"}],
|
705
|
+
"rankitems" : [],
|
706
|
+
"secondaryDescription" : ""}},
|
707
|
+
"Id" : 10144,
|
708
|
+
"Summary" : "Astral Quiver",
|
709
|
+
"URL" : "https://hzweb.hi-rezgame.net/smite-web/wp-content/uploads/2015/05/2002_10144.jpg"},
|
710
|
+
"AttackSpeed" : 0.95,
|
711
|
+
"AttackSpeedPerLevel" : 0.016,
|
712
|
+
"Cons" : "",
|
713
|
+
"HP5PerLevel" : 0.65,
|
714
|
+
"Health" : 460,
|
715
|
+
"HealthPerFive" : 8,
|
716
|
+
"HealthPerLevel" : 76,
|
717
|
+
"Lore" :
|
718
|
+
"Ravana's immortal reign subjugates the people. Shiva's boon grants the demon-king invulnerability against gods and beasts. Only mortal men stand a chance of defeating him, but Ravana's might is too potent for a mere man to overcome. All seems lost.\\n\\nTo save us, Vishnu took human form. Rama, prince of Ayodhya.\\n\\nAt age 16 he was already the perfect embodiment of man. Strong, humble, handsome, patient, devout; he is what mankind strives to be, yet, for all our flaws, can never reach.\\n\\nWhen a neighboring kingdom, cursed by Ravana's magic, asked for aid, Rama answered, despite the misgivings of his father. With his brother Laksharma, Rama set out and slew a horde of demons. At the palace, Rama cleansed the curse by freeing the queen from stone. The city celebrated and Rama was invited to string Shiva's bow – with the prize princess Sita's hand in marriage. Shiva's bow could not be lifted by any man, let alone strung, but Rama broke the bow in half. He and Sita wed immediately.\\n\\nReturning home, Rama was to be crown prince, but the jealousy of queen Kaikeyi forced Rama into exile, where he's remained these past fourteen years.\\n\\nYet Rama was recently seen on the field of battle. Word is, Ravana stole Rama's wife, and Rama left exile to embrace his destiny. He must defeat Ravana, free his wife, and set mankind on a path for peace, else darkness and evil will conquer all.",
|
719
|
+
"MP5PerLevel" : 0.25,
|
720
|
+
"MagicProtection" : 30,
|
721
|
+
"MagicProtectionPerLevel" : 0.9,
|
722
|
+
"MagicalPower" : 0,
|
723
|
+
"MagicalPowerPerLevel" : 0,
|
724
|
+
"Mana" : 205,
|
725
|
+
"ManaPerFive" : 4.5,
|
726
|
+
"ManaPerLevel" : 34,
|
727
|
+
"Name" : "Rama",
|
728
|
+
"OnFreeRotation" : "",
|
729
|
+
"Pantheon" : "Hindu",
|
730
|
+
"PhysicalPower" : 40,
|
731
|
+
"PhysicalPowerPerLevel" : 2.5,
|
732
|
+
"PhysicalProtection" : 12,
|
733
|
+
"PhysicalProtectionPerLevel" : 2.8,
|
734
|
+
"Pros" : " High Mobility, High Attack Speed",
|
735
|
+
"Roles" : " Hunter",
|
736
|
+
"Speed" : 365,
|
737
|
+
"Title" : "Seventh Avatar of Vishnu",
|
738
|
+
"Type" : " Ranged, Physical",
|
739
|
+
"abilityDescription1" : {},
|
740
|
+
"abilityDescription2" : {},
|
741
|
+
"abilityDescription3" : {},
|
742
|
+
"abilityDescription4" : {},
|
743
|
+
"abilityDescription5" : {},
|
744
|
+
"basicAttack" :
|
745
|
+
{"itemDescription" :
|
746
|
+
{"cooldown" : "",
|
747
|
+
"cost" : "",
|
748
|
+
"description" : "",
|
749
|
+
"menuitems" :
|
750
|
+
[{"description" : "Damage:", "value" : "40 + 2.5/Lvl (+100% of Physical Power)"},
|
751
|
+
{"description" : "Progression:", "value" : "None"}],
|
752
|
+
"rankitems" : [],
|
753
|
+
"secondaryDescription" : ""}},
|
754
|
+
"godAbility1_URL" : "https://hzweb.hi-rezgame.net/smite-web/wp-content/uploads/2015/05/2002_10160.jpg",
|
755
|
+
"godAbility2_URL" : "https://hzweb.hi-rezgame.net/smite-web/wp-content/uploads/2015/05/2002_10162.jpg",
|
756
|
+
"godAbility3_URL" : "https://hzweb.hi-rezgame.net/smite-web/wp-content/uploads/2015/05/2002_10038.jpg",
|
757
|
+
"godAbility4_URL" : "https://hzweb.hi-rezgame.net/smite-web/wp-content/uploads/2015/05/2002_10116.jpg",
|
758
|
+
"godAbility5_URL" : "https://hzweb.hi-rezgame.net/smite-web/wp-content/uploads/2015/05/2002_10144.jpg",
|
759
|
+
"godCard_URL" : "https://hzweb.hi-rezgame.net/smite-web/wp-content/uploads/2015/05/standardrama_card.jpg",
|
760
|
+
"godIcon_URL" : "http://hirezstudios.blob.core.windows.net/sitefinity/smite-god-icons/2002.jpg",
|
761
|
+
"id" : 2002,
|
762
|
+
"latestGod" : "n",
|
763
|
+
"ret_msg" : null
|
460
764
|
}
|
461
765
|
]
|