diff options
25 files changed, 413 insertions, 65 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 55675f7..43995da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,39 @@ # Changelog All notable changes to this project will be documented in this file. +## [Unreleased] + +### General +- A new skill, Aetherweave, has been added. +- Characters now have a location. Correspondingly, the "Locations" menu option and view has been replaced + by a "Look" menu and view. + +### Hearth +- New amentity: aetherloom (level 1, level 2) +- Foundation can now be upgraded to level 2. +- Constructing all level 2 amenities other than the foundation require a level 2 foundation to be built first. + If you already have a level 2 amenity, you are grandfathered in and can continue using it as normal. + +### Items +- New items: pluma moss, laris strand, fine aethermesh, faint weaving haste +- Aethermesh now increases manatrawl speed by 2. +- Apprentice wand now requires havencast level 5 to equip. + +### Activities +- Synthsever rusted lockbox base duration reduced from 180 to 120. +- Adjusted wealdreap drop tables at Twil Woods and Twil Grove to accommodate pluma moss and laris strand. + +### Monsters +- Pit leech, stalk beast, and grinpad damage reduced. +- XP awards reduced (except balgoloth). + +### Chat +- Chat area now shows most recent 200 messages, instead of 100. +- New "History" link shows a chat history of the last 2,000 messages. + +### UI +- Number of actions remaining is now displayed below timer when a set amount of actions have been queued. + ## [0.1.12] - 2021-06-23 ### General diff --git a/app/controllers/characters/hearth_controller.rb b/app/controllers/characters/hearth_controller.rb index c525add..ab9676e 100644 --- a/app/controllers/characters/hearth_controller.rb +++ b/app/controllers/characters/hearth_controller.rb @@ -8,6 +8,7 @@ class Characters::HearthController < ApplicationController laboratory: [], spicebench: [], binding_array: [], + aetherloom: [], } Activity.where("gid like ?", "craft_%").each do |activity| @@ -23,6 +24,8 @@ class Characters::HearthController < ApplicationController @amenity_activities[:spicebench].push(activity) && next when "binding_array" @amenity_activities[:binding_array].push(activity) && next + when "aetherloom" + @amenity_activities[:aetherloom].push(activity) && next else raise "Invalid amenity gid (#{requirement_data[:gid]}" end diff --git a/app/controllers/chat_messages_controller.rb b/app/controllers/chat_messages_controller.rb index 9112bb7..a299379 100644 --- a/app/controllers/chat_messages_controller.rb +++ b/app/controllers/chat_messages_controller.rb @@ -1,7 +1,10 @@ class ChatMessagesController < ApplicationController def index - # TODO: Let's rename this method to #list - @chat_messages = ChatMessage.order(created_at: :desc).limit(100).reverse + @chat_messages = ChatMessage.order(created_at: :desc).limit(2000) + end + + def list + @chat_messages = ChatMessage.order(created_at: :asc).limit(200) render partial: "chat_messages/list" end diff --git a/app/controllers/game_controller.rb b/app/controllers/game_controller.rb index 39ea6c9..4bbbf53 100644 --- a/app/controllers/game_controller.rb +++ b/app/controllers/game_controller.rb @@ -18,7 +18,7 @@ class GameController < ApplicationController def stop_activity current_char.stop_activity - redirect_to locations_path + redirect_to look_path end def finish_activity diff --git a/app/controllers/locations_controller.rb b/app/controllers/locations_controller.rb deleted file mode 100644 index 4616c3d..0000000 --- a/app/controllers/locations_controller.rb +++ /dev/null @@ -1,9 +0,0 @@ -class LocationsController < ApplicationController - def index - @locations = Location.all - end - - def show - @location = Location.find(params[:id]) - end -end diff --git a/app/controllers/look_controller.rb b/app/controllers/look_controller.rb new file mode 100644 index 0000000..e604670 --- /dev/null +++ b/app/controllers/look_controller.rb @@ -0,0 +1,5 @@ +class LookController < ApplicationController + def look + @location = current_char.location + end +end diff --git a/app/javascript/controllers/chat_controller.js b/app/javascript/controllers/chat_controller.js index 95b61c5..0605b3a 100644 --- a/app/javascript/controllers/chat_controller.js +++ b/app/javascript/controllers/chat_controller.js @@ -18,7 +18,7 @@ export default class extends Controller { load() { this.scrollToBottom(); if (this.outputTarget.innerHTML.trim() === "") { - fetch("/chat_messages") + fetch("/chat_messages/list") .then(response => response.text()) .then(html => { this.outputTarget.innerHTML = html; diff --git a/app/models/character.rb b/app/models/character.rb index 2669626..96dafd0 100644 --- a/app/models/character.rb +++ b/app/models/character.rb @@ -1,6 +1,7 @@ class Character < ApplicationRecord belongs_to :user belongs_to :activity, optional: true + belongs_to :location has_many :title_awards has_many :titles, through: :title_awards belongs_to :active_title, class_name: "Title", optional: true diff --git a/app/models/location.rb b/app/models/location.rb index e008270..7bd1386 100644 --- a/app/models/location.rb +++ b/app/models/location.rb @@ -2,6 +2,7 @@ class Location < ApplicationRecord include HasWhatnot has_many :activities + has_many :characters has_many :monster_spawns validates :gid, :name, presence: true end diff --git a/app/views/application/_chat.html.erb b/app/views/application/_chat.html.erb index b656ed7..1ba6f8f 100644 --- a/app/views/application/_chat.html.erb +++ b/app/views/application/_chat.html.erb @@ -3,13 +3,20 @@ <div data-chat-target="output" id="chat_output" class="game-container-box overflow-y-auto overflow-x-hidden break-words flex-grow"> </div> <div class="flex-none"> - <%= form_with model: ChatMessage.new, html: { autocomplete: "off" }, local: false, - data: { action: "chat#send" }, class: "flex" do |f| %> - <%= f.collection_select :chat_room_id, ChatRoom.accessible_to(current_char.user), - :id, :short_name, class: "flex-none" %> - <%= f.text_field :body, size: "1", maxlength: 255, required: true, - data: { chat_target: "message" }, class: "flex-grow inline-flex" %> - <% end %> + <div class="flex items-center"> + <div class="flex-grow"> + <%= form_with model: ChatMessage.new, html: { autocomplete: "off" }, local: false, + data: { action: "chat#send" }, class: "flex" do |f| %> + <%= f.collection_select :chat_room_id, ChatRoom.accessible_to(current_char.user), + :id, :short_name, class: "flex-none" %> + <%= f.text_field :body, size: "1", maxlength: 255, required: true, + data: { chat_target: "message" }, class: "flex-grow inline-flex" %> + <% end %> + </div> + <div class="flex-none text-xs mx-2"> + <%= link_to "History", chat_messages_path %> + </div> + </div> </div> </div> <% end %> diff --git a/app/views/application/_navbar.html.erb b/app/views/application/_navbar.html.erb index e315b42..d80e7b6 100644 --- a/app/views/application/_navbar.html.erb +++ b/app/views/application/_navbar.html.erb @@ -1,7 +1,7 @@ <ul class="py-2 px-2 col-span-12 text-display space-x-2.5"> <% if current_char %> <li class="inline"> - <%= link_to "Locations", locations_path %> + <%= link_to "Look", look_path %> </li> <li class="inline"> <%= link_to "Character", character_path(current_char) %> diff --git a/app/views/application/_timer.html.erb b/app/views/application/_timer.html.erb index 51d9b81..a18e739 100644 --- a/app/views/application/_timer.html.erb +++ b/app/views/application/_timer.html.erb @@ -15,14 +15,18 @@ </div> </div> - <% most_recent_cs = current_char.character_skills.order(:updated_at).last %> <div class="text-center text-sm"> <div class="text-xs"><%= most_recent_cs.skill.name %> level <%= most_recent_cs.level %></div> <div><%= most_recent_cs.xp_to_next_level %> XP to next level</div> </div> - <div class="text-center my-2"> + <div class="text-center text-sm my-2"> + <% if current_char.queued_actions %> + <div class="my-1"> + <%= pluralize(current_char.queued_actions + 1, "action") %> remaining. + </div> + <% end %> <%= button_to "Stop", stop_activity_path, class: "text-sm" %> </div> diff --git a/app/views/chat_messages/index.html.erb b/app/views/chat_messages/index.html.erb new file mode 100644 index 0000000..8791e7b --- /dev/null +++ b/app/views/chat_messages/index.html.erb @@ -0,0 +1,9 @@ +<h1 class="text-3xl mb-4"> + Chat History +</h1> + +<p class="mb-4">Last 2,000 messages listed from newest to oldest.</p> + +<div class="text-sm"> + <%= render "chat_messages/list" %> +</div> diff --git a/app/views/locations/index.html.erb b/app/views/locations/index.html.erb deleted file mode 100644 index 3c9b837..0000000 --- a/app/views/locations/index.html.erb +++ /dev/null @@ -1,8 +0,0 @@ -<h1 class="text-3xl mb-4">Locations</h1> - -<% @locations.each do |location| %> - <div class="my-4"> - <h2 class="text-xl"><%= link_to location.name, location_path(location) %></h2> - <p class="italic"><%= location.description %></p> - </div> -<% end %> diff --git a/app/views/locations/show.html.erb b/app/views/look/look.html.erb index fcc668a..2f1074a 100644 --- a/app/views/locations/show.html.erb +++ b/app/views/look/look.html.erb @@ -6,7 +6,7 @@ <% @location.monster_spawns.select(&:alive?).each do |ms| %> <p class="text-yellow-400">A <%= ms.monster.name %> is ravaging this location! (<%= ms.remaining_hp %> HP)</p> <%# TODO: HACK %> - <% activity = Activity.find_by_gid("beastslay_leviathan_floret_region") %> + <% activity = Activity.find_by_gid("beastslay_leviathan_floret") %> <%= form_with url: start_activity_path(activity) do |f| %> <%= f.hidden_field :id, value: activity.id %> <%= f.submit "Hunt" %> diff --git a/config/routes.rb b/config/routes.rb index 6e435f2..ce39562 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -11,8 +11,13 @@ Rails.application.routes.draw do put "users", to: "devise/registrations#update", as: "user_registration" end - resources :chat_messages, only: [:index, :create] - resources :locations, only: [:index, :show] + get :look, to: "look#look" + + resources :chat_messages, only: [:index, :create] do + collection do + get :list + end + end resources :activities, only: [:index, :show] do get :costs_and_requirements, on: :member end diff --git a/data/activities.yml b/data/activities.yml index a0a0072..f141500 100644 --- a/data/activities.yml +++ b/data/activities.yml @@ -15,6 +15,23 @@ construct_foundation_level1: - type: "hearth_amenity" gid: "foundation" level: 1 +construct_foundation_level2: + name: "Construct Foundation Level 2" + description: "Upgrade your foundation to level 2." + whatnot: + duration: + base: 600 + cost: + - type: "item" + gid: "stone" + quantity: 250 + - type: "item" + gid: "wood" + quantity: 250 + results: + - type: "hearth_amenity" + gid: "foundation" + level: 2 construct_forge_level1: name: "Construct Forge Level 1" description: "Build a level 1 forge." @@ -40,6 +57,9 @@ construct_forge_level2: requirements: - type: "hearth_amenity" gid: "foundation" + level: 2 + - type: "hearth_amenity" + gid: "forge" level: 1 duration: base: 2400 @@ -87,6 +107,9 @@ construct_laboratory_level2: whatnot: requirements: - type: "hearth_amenity" + gid: "foundation" + level: 2 + - type: "hearth_amenity" gid: "laboratory" level: 1 duration: @@ -117,6 +140,10 @@ construct_listern_font_level1: whatnot: duration: base: 1000 + requirements: + - type: "hearth_amenity" + gid: "foundation" + level: 1 cost: - type: "item" gid: "stone" @@ -136,6 +163,9 @@ construct_listern_font_level2: - type: "hearth_amenity" gid: "listern_font" level: 1 + - type: "hearth_amenity" + gid: "foundation" + level: 2 duration: base: 3600 cost: @@ -179,6 +209,9 @@ construct_loamspire_level2: whatnot: requirements: - type: "hearth_amenity" + gid: "foundation" + level: 2 + - type: "hearth_amenity" gid: "loamspire" level: 1 duration: @@ -230,6 +263,9 @@ construct_spicebench_level2: whatnot: requirements: - type: "hearth_amenity" + gid: "foundation" + level: 2 + - type: "hearth_amenity" gid: "spicebench" level: 1 duration: @@ -287,6 +323,9 @@ construct_binding_array_level2: whatnot: requirements: - type: "hearth_amenity" + gid: "foundation" + level: 2 + - type: "hearth_amenity" gid: "binding_array" level: 1 duration: @@ -314,6 +353,63 @@ construct_binding_array_level2: - type: "hearth_amenity" gid: "binding_array" level: 2 +construct_aetherloom_level1: + name: "Construct Aetherloom Level 1" + description: "Build a level 1 aetherloom." + whatnot: + requirements: + - type: "hearth_amenity" + gid: "foundation" + level: 1 + duration: + base: 600 + cost: + - type: "item" + gid: "stone" + quantity: 50 + - type: "item" + gid: "wood" + quantity: 200 + - type: "item" + gid: "pluma_moss" + quantity: 50 + results: + - type: "hearth_amenity" + gid: "aetherloom" + level: 1 +construct_aetherloom_level2: + name: "Construct Aetherloom Level 2" + description: "Upgrade your aetherloom to level 2." + whatnot: + requirements: + - type: "hearth_amenity" + gid: "foundation" + level: 2 + - type: "hearth_amenity" + gid: "aetherloom" + level: 1 + duration: + base: 2400 + cost: + - type: "item" + gid: "stone" + quantity: 50 + - type: "item" + gid: "wood" + quantity: 200 + - type: "item" + gid: "pluma_moss" + quantity: 40 + - type: "item" + gid: "laris_strand" + quantity: 40 + - type: "item" + gid: "shimmering_essence" + quantity: 15 + results: + - type: "hearth_amenity" + gid: "aetherloom" + level: 2 plant_mudtub_seed: name: "Plant Mudtub Seed" description: "Plant a mudtub seed." @@ -1668,6 +1764,83 @@ craft_onus_of_vision: xp: - gid: "otherforge" value: 200 +craft_aethermesh: + name: "Weave aethermesh" + description: "Weave an aethermesh." + whatnot: + requirements: + - type: "hearth_amenity" + gid: "aetherloom" + level: 1 + - type: "skill" + gid: "aetherweave" + level: 1 + duration: + base: 90 + minimum: 35 + scaling: + - type: "skill" + gid: "aetherweave" + scale_value: 0.5 + - type: "stat" + gid: "aetherweave_speed" + scale_value: 1 + cost: + - type: "item" + gid: "pluma_moss" + quantity: 20 + - type: "item" + gid: "arcane_dust" + quantity: 10 + - type: "item" + gid: "wood" + quantity: 5 + results: + - type: "item" + gid: "aethermesh" + xp: + - gid: "aetherweave" + value: 8 +craft_fine_aethermesh: + name: "Weave fine aethermesh" + description: "Weave a fine aethermesh." + whatnot: + requirements: + - type: "hearth_amenity" + gid: "aetherloom" + level: 2 + - type: "skill" + gid: "aetherweave" + level: 10 + duration: + base: 105 + minimum: 35 + scaling: + - type: "skill" + gid: "aetherweave" + scale_value: 0.5 + - type: "stat" + gid: "aetherweave_speed" + scale_value: 1 + cost: + - type: "item" + gid: "laris_strand" + quantity: 20 + - type: "item" + gid: "arcane_dust" + quantity: 10 + - type: "item" + gid: "shimmering_essence" + quantity: 2 + - type: "item" + gid: "wood" + quantity: 5 + results: + - type: "item" + gid: "fine_aethermesh" + xp: + - gid: "aetherweave" + value: 10 craft_mending_salve: name: "Mix mending salve" description: "Mix a mending salve." @@ -1989,7 +2162,7 @@ craft_mercuria_potion: planequarry_floret_mines: name: "Quarry Floret Mines" description: "Planequarry at the Floret Mines." - location: "floret_region" + location: "floret" whatnot: requirements: - type: "skill" @@ -2059,7 +2232,7 @@ planequarry_floret_mines: planequarry_deepshaft: name: "Quarry Deepshaft" description: "Descend far below the the Floret Mines into the labyrinth of shafts left behind by the ancients." - location: "floret_region" + location: "floret" whatnot: requirements: - type: "skill" @@ -2134,7 +2307,7 @@ planequarry_deepshaft: planequarry_brine_trench: name: "Quarry Brine Trench" description: "Planequarry in the south Floret brine trench." - location: "floret_region" + location: "floret" whatnot: requirements: - type: "skill" @@ -2169,7 +2342,7 @@ planequarry_brine_trench: beastslay_killing_fields: name: "Slay in the Killing Fields" description: "Hunt monsters in the Killing Fields." - location: "floret_region" + location: "floret" whatnot: requirements: - type: "skill" @@ -2197,7 +2370,7 @@ beastslay_killing_fields: beastslay_hopegraves: name: "Slay in the Hopegraves" description: "Hunt monsters in the Hopegraves." - location: "floret_region" + location: "floret" whatnot: requirements: - type: "skill" @@ -2223,7 +2396,7 @@ beastslay_hopegraves: wealdreap_twil_woods: name: "Reap Twil Woods" description: "Wealdreap within Twil Woods." - location: "floret_region" + location: "floret" whatnot: requirements: - type: "skill" @@ -2250,13 +2423,18 @@ wealdreap_twil_woods: - type: "item" chance: 1 table: + - gid: "pluma_moss" + score: 0.10 + xp: + - gid: "wealdreap" + value: 1 - gid: "burstshroom" - score: 0.20 + score: 0.40 xp: - gid: "wealdreap" value: 6 - gid: "aseas_leaf" - score: 0.59 + score: 0.70 xp: - gid: "wealdreap" value: 8 @@ -2294,7 +2472,7 @@ wealdreap_twil_woods: wealdreap_twil_grove: name: "Reap Twil Grove" description: "Wealdreap within the hidden woodways of the Twil Woods Grove." - location: "floret_region" + location: "floret" whatnot: requirements: - type: "skill" @@ -2316,13 +2494,18 @@ wealdreap_twil_grove: - type: "item" chance: 1 table: - - gid: "woodrun_bloom" + - gid: "laris_strand" score: 0.10 xp: - gid: "wealdreap" + value: 2 + - gid: "woodrun_bloom" + score: 0.40 + xp: + - gid: "wealdreap" value: 8 - gid: "last_breath" - score: 0.65 + score: 0.70 xp: - gid: "wealdreap" value: 10 @@ -2366,7 +2549,7 @@ wealdreap_twil_grove: manatrawl_sor_well: name: "Trawl Sor Well" description: "Manatrawl within Sor Well." - location: "floret_region" + location: "floret" whatnot: requirements: - type: "skill" @@ -2410,7 +2593,7 @@ manatrawl_sor_well: manatrawl_sor_well_depths: name: "Trawl Sor Well Depths" description: "Manatrawl deep within Sor Well." - location: "floret_region" + location: "floret" whatnot: requirements: - type: "skill" @@ -2463,7 +2646,7 @@ synthsever_rusted_lockbox: gid: "synthsever" level: 1 duration: - base: 180 + base: 120 minimum: 35 scaling: - type: "skill" @@ -2516,7 +2699,7 @@ open_unlocked_rusted_lockbox: wildscour_crumbling_ruins: name: "Scour Crumbling Ruins" description: "Wildscour within the crumbling ruins." - location: "floret_region" + location: "floret" whatnot: requirements: - type: "skill" @@ -2795,7 +2978,7 @@ craft_dusted_templis: xp: - gid: "spicework" value: 14 -beastslay_leviathan_floret_region: +beastslay_leviathan_floret: name: "Hunt a Leviathan in the Floret Region" description: "You are hunting down a leviathan ravaging the Floret Region." whatnot: @@ -2815,7 +2998,7 @@ beastslay_leviathan_floret_region: scale_value: 1 results: - type: "monster_spawn" - location: "floret_region" + location: "floret" chance: 1 craft_faint_mana: name: "Bind faint mana" @@ -2953,6 +3136,40 @@ craft_faint_working_haste: xp: - gid: "omenbind" value: 12 +craft_faint_weaving_haste: + name: "Bind faint weaving haste" + description: "Bind an omen of faint weaving haste." + whatnot: + requirements: + - type: "hearth_amenity" + gid: "binding_array" + level: 1 + - type: "skill" + gid: "omenbind" + level: 5 + duration: + base: 75 + minimum: 35 + scaling: + - type: "skill" + gid: "omenbind" + scale_value: 0.5 + - type: "stat" + gid: "omenbind_speed" + scale_value: 1 + cost: + - type: "item" + gid: "vestige" + quantity: 10 + - type: "item" + gid: "pluma_moss" + quantity: 10 + results: + - type: "item" + gid: "faint_weaving_haste" + xp: + - gid: "omenbind" + value: 12 craft_minor_mana: name: "Bind minor mana" description: "Bind an omen of minor mana." diff --git a/data/hearth_amenities.yml b/data/hearth_amenities.yml index e58aa1c..dbc35ed 100644 --- a/data/hearth_amenities.yml +++ b/data/hearth_amenities.yml @@ -5,6 +5,8 @@ foundation: construct_activities: - level: 1 gid: "construct_foundation_level1" + - level: 2 + gid: "construct_foundation_level2" forge: name: "Forge" description: "A stone furnace. Can be used for practicing the otherforge skill." @@ -95,4 +97,13 @@ binding_array: gid: "construct_binding_array_level1" - level: 2 gid: "construct_binding_array_level2" - +aetherloom: + name: "Aetherloom" + description: >- + A construction that allows the user to craft items using the aetherweave skill. + whatnot: + construct_activities: + - level: 1 + gid: "construct_aetherloom_level1" + - level: 2 + gid: "construct_aetherloom_level2" diff --git a/data/items.yml b/data/items.yml index 59ce7ce..44da7b5 100644 --- a/data/items.yml +++ b/data/items.yml @@ -470,6 +470,18 @@ last_breath: whatnot: tags: - "material" +pluma_moss: + name: "pluma moss" + description: "A fluffy moss that can be woven into cloth." + whatnot: + tags: + - "material" +laris_strand: + name: "laris strand" + description: "A long, thin, robust fiber from the laris plant." + whatnot: + tags: + - "material" woodrun_bloom: name: "woodrun bloom" description: >- @@ -917,6 +929,10 @@ apprentice_wand: tags: - "tool" - "focus" + equip_requirements: + - type: "skill" + gid: "havencast" + level: 5 equip_slots: - "mainhand" - "offhand" @@ -933,6 +949,23 @@ aethermesh: - "aethermesh" equip_slots: - "mainhand" + equip_effects: + - type: "stat_change" + gid: "manatrawl_speed" + modifier: 2 +fine_aethermesh: + name: "fine aethermesh" + description: "A fine tool for manatrawl." + whatnot: + tags: + - "tool" + - "aethermesh" + equip_slots: + - "mainhand" + equip_effects: + - type: "stat_change" + gid: "manatrawl_speed" + modifier: 10 quarrying_draught: name: "quarrying draught" description: "Increases the speed of planequarry for an hour." @@ -1183,6 +1216,18 @@ faint_working_haste: - type: "stat_change" gid: "spicework_speed" modifier: 2 +faint_weaving_haste: + name: "faint weaving haste" + description: "A very weak omen that grants a very small increase to aetherweave speed." + whatnot: + tags: + - "omen" + infix_skills: + - gid: "aetherweave" + infix_effects: + - type: "stat_change" + gid: "aetherweave_speed" + modifier: 2 simple_spellpage: name: "simple spellpage" description: "An old piece of parchment covered in magical script. Deciphering it can yield knowledge of a spell." diff --git a/data/locations.yml b/data/locations.yml index 10bc028..00b48c0 100644 --- a/data/locations.yml +++ b/data/locations.yml @@ -1,4 +1,4 @@ -floret_region: +floret: name: "Floret" description: "A relatively safe haven nestled against the great Sor River." whatnot: diff --git a/data/monsters.yml b/data/monsters.yml index 01596b0..8d4cc86 100644 --- a/data/monsters.yml +++ b/data/monsters.yml @@ -23,11 +23,11 @@ pit_leech: - type: "damage" gid: "pierce" min: 1 - max: 5 + max: 2 awards: - type: "xp" gid: "beastslay" - base: 4 + base: 3 - type: "item" chance: 1 table: @@ -63,12 +63,12 @@ stalk_beast: hit_effects: - type: "damage" gid: "bash" - min: 2 - max: 7 + min: 1 + max: 5 awards: - type: "xp" gid: "beastslay" - base: 7 + base: 4 - type: "item" chance: 1 table: @@ -104,12 +104,12 @@ grinpad: hit_effects: - type: "damage" gid: "slash" - min: 4 - max: 10 + min: 3 + max: 9 awards: - type: "xp" gid: "beastslay" - base: 11 + base: 5 - type: "item" chance: 1 table: @@ -157,7 +157,7 @@ lesser_trodgeathomp: awards: - type: "xp" gid: "beastslay" - base: 16 + base: 10 - type: "title" gid: "retributor" - type: "item" @@ -213,7 +213,7 @@ bollyrot: awards: - type: "xp" gid: "beastslay" - base: 13 + base: 6 - type: "item" chance: 1 table: @@ -262,7 +262,7 @@ crypt_writhe: awards: - type: "xp" gid: "beastslay" - base: 20 + base: 13 - type: "item" chance: 0.05 gid: "black_gizzard" diff --git a/data/skills.yml b/data/skills.yml index 0bbd63a..ef9cb53 100644 --- a/data/skills.yml +++ b/data/skills.yml @@ -1,4 +1,8 @@ --- +aetherweave: + name: "Aetherweave" + description: >- + Crafting aethermeshes, belts, cloaks, and other fabric items. beastslay: name: "Beastslay" description: >- diff --git a/db/migrate/20210705235925_update_floret_gid.rb b/db/migrate/20210705235925_update_floret_gid.rb new file mode 100644 index 0000000..db24044 --- /dev/null +++ b/db/migrate/20210705235925_update_floret_gid.rb @@ -0,0 +1,5 @@ +class UpdateFloretGid < ActiveRecord::Migration[6.1] + def change + Location.find_by_gid("floret_region").update(gid: "floret") + end +end diff --git a/db/migrate/20210706000053_add_location_to_character.rb b/db/migrate/20210706000053_add_location_to_character.rb new file mode 100644 index 0000000..ec71ee8 --- /dev/null +++ b/db/migrate/20210706000053_add_location_to_character.rb @@ -0,0 +1,9 @@ +class AddLocationToCharacter < ActiveRecord::Migration[6.1] + def change + add_reference :characters, :location, foreign_key: true + Character.all.each do |character| + character.update(location_id: Location.find_by_gid("floret").id) + end + change_column :characters, :location_id, :bigint, null: false + end +end diff --git a/db/schema.rb b/db/schema.rb index 6c503fd..3c6cc28 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2021_06_16_014044) do +ActiveRecord::Schema.define(version: 2021_07_06_000053) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -86,8 +86,10 @@ ActiveRecord::Schema.define(version: 2021_06_16_014044) do t.integer "defensive_style" t.integer "rested_duration" t.datetime "started_resting_at" + t.bigint "location_id", null: false t.index ["active_title_id"], name: "index_characters_on_active_title_id" t.index ["activity_id"], name: "index_characters_on_activity_id" + t.index ["location_id"], name: "index_characters_on_location_id" t.index ["user_id"], name: "index_characters_on_user_id" end @@ -319,6 +321,7 @@ ActiveRecord::Schema.define(version: 2021_06_16_014044) do add_foreign_key "character_skills", "characters" add_foreign_key "character_skills", "skills" add_foreign_key "characters", "activities" + add_foreign_key "characters", "locations" add_foreign_key "characters", "titles", column: "active_title_id" add_foreign_key "characters", "users" add_foreign_key "chat_messages", "characters", column: "sender_id" |