From 4bb9550e83c4edabacfaab19a07ddd329e65cc3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bruno=20Mussoi=20Mendon=C3=A7a?= Date: Mon, 4 Jul 2022 10:02:47 -0300 Subject: [PATCH] new ways to fish and new fish icons --- ai/actions/fisher/go_fish_action.lua | 6 +- .../fisher/turn_to_face_water_action.lua | 19 ++- archipelago_biome_server.lua | 6 +- call_handlers/fishing_call_handler.lua | 137 ++++++++++++++++++ components/boat_dock/boat_dock.lua | 31 ++++ components/fisher_field/fisher_field.lua | 39 +++++ data/commands/archer_arrows/fish_arrows.png | Bin 8179 -> 4240 bytes data/cursors/zone_fish.cur | Bin 0 -> 4286 bytes data/cursors/zone_fish_invalid.cur | Bin 0 -> 4286 bytes data/fishing/fishing.json | 9 -- .../passion_fisher/passion_fisher_trait.png | Bin 5608 -> 1544 bytes data/ui/start_menu.json | 14 ++ jobs/archer/archer_buffs/fish_in_face.png | Bin 4806 -> 942 bytes jobs/fisher/field/field.json | 25 ++++ jobs/fisher/fisher.lua | 10 +- jobs/fisher/images/faster_fishing_perk.png | Bin 5380 -> 1859 bytes .../recipes/food/fish_cooked_recipe.json | 2 +- locales/en.json | 15 ++ locales/pt-BR.json | 15 ++ manifest.json | 27 +++- renderers/fisher_field/fisher_field.lua | 41 ++++++ ui/game/start_menu/images/zone_fish.png | Bin 0 -> 365 bytes ui/game/start_menu/start_menu.js | 31 ++++ .../select_settlement/images/wildlife.png | Bin 3265 -> 278 bytes .../images/wildlife_empty.png | Bin 3121 -> 192 bytes update_log.txt | 8 +- 26 files changed, 407 insertions(+), 28 deletions(-) create mode 100644 call_handlers/fishing_call_handler.lua create mode 100644 components/fisher_field/fisher_field.lua create mode 100644 data/cursors/zone_fish.cur create mode 100644 data/cursors/zone_fish_invalid.cur create mode 100644 jobs/fisher/field/field.json create mode 100644 renderers/fisher_field/fisher_field.lua create mode 100644 ui/game/start_menu/images/zone_fish.png create mode 100644 ui/game/start_menu/start_menu.js diff --git a/ai/actions/fisher/go_fish_action.lua b/ai/actions/fisher/go_fish_action.lua index d4edcb2..ca88d95 100644 --- a/ai/actions/fisher/go_fish_action.lua +++ b/ai/actions/fisher/go_fish_action.lua @@ -1,7 +1,6 @@ ---I do not give consent to copy this local GoFish = class() -GoFish.name = 'go to a dock to fish' +GoFish.name = 'go to a fishing_spot to fish' GoFish.does = 'archipelago_biome:go_fish' GoFish.status_text_key = 'archipelago_biome:ai.actions.status_text.fishing' GoFish.args = { } @@ -21,6 +20,7 @@ function find_a_fishing_spot(ai_entity) end local function rate_fishing_spot(entity) + --take entity type (zone, boat or dock) and distance into consideration local rng = _radiant.math.get_default_rng() return rng:get_real(0, 1) end @@ -42,7 +42,7 @@ return ai:create_compound_action(GoFish) :execute('stonehearth:find_best_reachable_entity_by_type', { filter_fn = ai.CALL(find_a_fishing_spot, ai.ENTITY), rating_fn = rate_fishing_spot, - description = 'find a dock' + description = 'find a fishing_spot' }) :execute('stonehearth:goto_entity', { entity = ai.PREV.item diff --git a/ai/actions/fisher/turn_to_face_water_action.lua b/ai/actions/fisher/turn_to_face_water_action.lua index 9b2919e..84ffd12 100644 --- a/ai/actions/fisher/turn_to_face_water_action.lua +++ b/ai/actions/fisher/turn_to_face_water_action.lua @@ -1,17 +1,30 @@ local Entity = _radiant.om.Entity local TurnToFaceWater = class() +local rng = _radiant.math.get_default_rng() TurnToFaceWater.name = 'correct rotation facing the water' TurnToFaceWater.does = 'archipelago_biome:turn_to_face_water' TurnToFaceWater.args = { -dock = Entity + dock = Entity } TurnToFaceWater.version = 2 TurnToFaceWater.priority = 1 function TurnToFaceWater:run(ai, entity, args) - local face = radiant.entities.get_facing(args.dock) - radiant.entities.turn_to(entity, face) + if radiant.entities.get_posture(entity) == "stonehearth:in_boat" then + radiant.entities.turn_to(entity, rng:get_int(0,360)) + else + local face = 0 + local fisher_field_component = args.dock:get_component("archipelago_biome:fisher_field") + if fisher_field_component then + local water_location = fisher_field_component:get_water_direction(radiant.entities.get_world_grid_location(entity)) + entity:get_component('mob'):turn_to_face_point(water_location) + face = radiant.entities.get_facing(entity) + else + face = radiant.entities.get_facing(args.dock) + end + radiant.entities.turn_to(entity, face+rng:get_int(-35,35)) + end end return TurnToFaceWater \ No newline at end of file diff --git a/archipelago_biome_server.lua b/archipelago_biome_server.lua index 14fe5e6..b3b9ac2 100644 --- a/archipelago_biome_server.lua +++ b/archipelago_biome_server.lua @@ -1,13 +1,13 @@ archipelago_biome = {} -print("Archipelago Biome Mod version 22.6.13") +print("Archipelago Biome Mod version 22.7.4") --[[ +fisher village + spawn whale, maybe from turtle rig. or as a fancy and decorated landmark wave effect for storm weather -fish anywhere near water, docks will be just a prefered place - rework pirate hat Bugs: diff --git a/call_handlers/fishing_call_handler.lua b/call_handlers/fishing_call_handler.lua new file mode 100644 index 0000000..ab3fe13 --- /dev/null +++ b/call_handlers/fishing_call_handler.lua @@ -0,0 +1,137 @@ +local Color4 = _radiant.csg.Color4 +local Point3 = _radiant.csg.Point3 +local Cube3 = _radiant.csg.Cube3 + +local validator = radiant.validator + +local FishingCallHandler = class() + +function FishingCallHandler._custom_is_valid_location(self_variable, brick) + --i had to hack into this stupid function because it was the only way to make it work 😡 + if not brick then + return false + end + + if radiant.terrain.is_blocked(brick) then + return false + end + if not radiant.terrain.is_supported(brick) then + return false + end + local entities = radiant.terrain.get_entities_at_point(brick) + for _, entity in pairs(entities) do + if not self_variable._can_contain_entity_filter_fn(entity, self_variable) then + return false + end + end + return FishingCallHandler.has_water_below(brick) +end + +function FishingCallHandler:choose_new_fish_location(session, response) + stonehearth.selection:select_xz_region("fish_zone") + :use_designation_marquee(Color4(129, 192, 165, 255)) + :set_cursor('archipelago_biome:cursors:zone_fish') + :set_invalid_cursor('archipelago_biome:cursors:zone_fish_invalid') + :require_unblocked(true) + :require_supported(true) + :allow_unselectable_support_entities(true) + :set_can_contain_entity_filter(function(entity) + if radiant.entities.get_entity_data(entity, 'stonehearth:designation') then + return false + end + if entity:get_component('terrain') then + return false + end + return true + end) + :set_find_support_filter(function(result, select_xz_region) + select_xz_region._is_valid_location = FishingCallHandler._custom_is_valid_location + + local entity = result.entity + if not entity then + return stonehearth.selection.FILTER_IGNORE + end + local rcs = entity:get_component('region_collision_shape') + local region_collision_type = rcs and rcs:get_region_collision_type() + if region_collision_type == _radiant.om.RegionCollisionShape.NONE then + return stonehearth.selection.FILTER_IGNORE + end + + if result.brick then + return true + end + return stonehearth.selection.FILTER_IGNORE + end) + + :done(function(selector, box) + local size = { + x = box.max.x - box.min.x, + y = box.max.z - box.min.z, + } + _radiant.call('archipelago_biome:create_new_field', box.min, size) + :done(function(r) + response:resolve({ field = r.field }) + end) + :always(function() + selector:destroy() + end) + end) + :fail(function(selector) + selector:destroy() + response:reject('no region') + end) + :go() +end + +function FishingCallHandler.has_water_below(origin) + return + FishingCallHandler._get_water_below(origin-Point3.unit_z) or + FishingCallHandler._get_water_below(origin+Point3.unit_z) or + FishingCallHandler._get_water_below(origin-Point3.unit_x) or + FishingCallHandler._get_water_below(origin+Point3.unit_x) +end + +function FishingCallHandler._get_water_below(neighbor_point) + local ground_point = radiant.terrain.get_standable_point(neighbor_point) + local entities_present = radiant.terrain.get_entities_at_point(ground_point) + + for id, entity in pairs(entities_present) do + local water_component = entity:get_component('stonehearth:water') + if water_component then + return true + end + end + return false +end + +function FishingCallHandler:create_new_field(session, response, location, size) + validator.expect_argument_types({'Point3', 'table'}, location, size) + + local entity = radiant.entities.create_entity('archipelago_biome:fisher:field', { owner = session.player_id }) + radiant.terrain.place_entity(entity, location) + + local shape = Cube3(Point3.zero, Point3(size.x, 1, size.y)) + entity:add_component('region_collision_shape') + :set_region_collision_type(_radiant.om.RegionCollisionShape.NONE) + :set_region(_radiant.sim.alloc_region3()) + :get_region():modify(function(cursor) + cursor:add_unique_cube(shape) + end) + entity:add_component('destination') + :set_region(_radiant.sim.alloc_region3()) + :get_region():modify(function(cursor) + cursor:add_unique_cube(shape) + end) + entity:get_component('destination') + :set_adjacent(_radiant.sim.alloc_region3()) + :get_adjacent():modify(function(cursor) + cursor:add_unique_cube(shape) + end) + + local fisher_field = entity:get_component('archipelago_biome:fisher_field') + fisher_field:set_size(size.x,size.y) + + return { field = entity } +end + +return FishingCallHandler \ No newline at end of file diff --git a/components/boat_dock/boat_dock.lua b/components/boat_dock/boat_dock.lua index 1cc4dbb..7919187 100644 --- a/components/boat_dock/boat_dock.lua +++ b/components/boat_dock/boat_dock.lua @@ -18,6 +18,7 @@ end function ArchipelagoBoatDock:initialize() self._sv.platform = nil self._sv.other_dock = nil + self._sv.dock_spots = {} self._sv._effect_overlay = nil end @@ -26,6 +27,7 @@ function ArchipelagoBoatDock:activate() self._removed_from_world_listener = radiant.events.listen(self._entity, 'stonehearth:on_removed_from_world', function() self:destroy_platform() self:destroy_other_dock() + self:destroy_fishing_spot() if self._sv._effect_overlay then self._sv._effect_overlay:stop() self._sv._effect_overlay = nil @@ -54,12 +56,29 @@ function ArchipelagoBoatDock:create_connections() if other_side then self:create_platform(other_side) self:create_destination_dock(other_side) + self:create_fishing_spot(radiant.entities.get_world_grid_location(self._entity), other_side) else self._sv._effect_overlay = radiant.effects.run_effect(self._entity, "archipelago_biome:effects:overlay:no_connection", nil, nil, { playerColor = radiant.entities.get_player_color(self._entity) }) end end end +function ArchipelagoBoatDock:create_fishing_spot(this_side, other_side) + local total_distance = this_side:distance_to(other_side) + if total_distance > 15 then + local middle_point = (this_side+other_side)/2 + local dock_spot = radiant.entities.create_entity("archipelago_biome:decoration:dock_spot", + {owner = self._entity:get_player_id()}) + radiant.terrain.place_entity_at_exact_location(dock_spot, + middle_point +Point3.unit_y*2) + + table.insert(self._sv.dock_spots, dock_spot) + + self:create_fishing_spot(middle_point, this_side) + self:create_fishing_spot(middle_point, other_side) + end +end + function ArchipelagoBoatDock:find_other_side() local mob = self._entity:get_component('mob') local facing = mob:get_facing() @@ -153,9 +172,21 @@ function ArchipelagoBoatDock:destroy_other_dock() end end +function ArchipelagoBoatDock:destroy_fishing_spot() + if self._sv.dock_spots then + for i, dock_spot in ipairs(self._sv.dock_spots) do + if dock_spot and dock_spot:is_valid() then + radiant.entities.destroy_entity(dock_spot) + end + end + self._sv.dock_spots = {} + end +end + function ArchipelagoBoatDock:destroy() self:destroy_platform() self:destroy_other_dock() + self:destroy_fishing_spot() if self._sensor_trace then self._sensor_trace:destroy() diff --git a/components/fisher_field/fisher_field.lua b/components/fisher_field/fisher_field.lua new file mode 100644 index 0000000..57d6e18 --- /dev/null +++ b/components/fisher_field/fisher_field.lua @@ -0,0 +1,39 @@ +local FisherFieldComponent = class() +local Point2 = _radiant.csg.Point2 +local Point3 = _radiant.csg.Point3 + +function FisherFieldComponent:initialize() + self._sv.size = nil +end + +function FisherFieldComponent:create() + self._sv.size = Point2.zero +end + +function FisherFieldComponent:set_size(x, z) + self._sv.size = Point2(x, z) + self.__saved_variables:mark_changed() +end + +function FisherFieldComponent:get_water_direction(origin) + return + FisherFieldComponent:_get_water_below(origin-Point3.unit_z) or + FisherFieldComponent:_get_water_below(origin+Point3.unit_z) or + FisherFieldComponent:_get_water_below(origin-Point3.unit_x) or + FisherFieldComponent:_get_water_below(origin+Point3.unit_x) +end + +function FisherFieldComponent:_get_water_below(neighbor_point) + local ground_point = radiant.terrain.get_standable_point(neighbor_point) + local entities_present = radiant.terrain.get_entities_at_point(ground_point) + + for id, entity in pairs(entities_present) do + local water_component = entity:get_component('stonehearth:water') + if water_component then + return neighbor_point + end + end + return false +end + +return FisherFieldComponent \ No newline at end of file diff --git a/data/commands/archer_arrows/fish_arrows.png b/data/commands/archer_arrows/fish_arrows.png index 60a59e3e8b215c7517459260e00b35012bd718d9..67aaf1743b5b9c31c7a2895eb4336243d03dbb11 100644 GIT binary patch delta 4224 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 ZX8`Rb$~>J;J2U_Q002ovPDHLkV1lrFx~2dC diff --git a/data/cursors/zone_fish.cur b/data/cursors/zone_fish.cur new file mode 100644 index 0000000000000000000000000000000000000000..1b71b3e42967e57426a1d7b9a43606cfc6104eec GIT binary patch literal 4286 zcmdUzF;2rk5JfkE15nZ8l2ZWpphbv+6VMPSC@CYlv{4$0T!0dZHZ@0K`D6T@Z)apX z@fyNP!;E)l=l$_6AtHov7=OH13>BlrQjig-d0Z{90-}pQedbj_@-B~m%dMG{T)oafhJN=h+w65;ax|XwA z+*ZuyG)H5tW3k7-xw?#MmSeeE$6{r3javBZdDYOB@6{pSTWg!6hQH#QzHQ#W*H54R zS+7g~b{Ckheki`x)%&;ae7p1dUbcz*yno~H47&W@6|9QZE_};r>WOvRG%!zVrQoxk zSD$O(?HgkK_Wjz xowoaJpHUnm2LIhh8zCHg;ok&mZ+PCttj06!3HAtkK||}2j^ENXgkt~z literal 0 HcmV?d00001 diff --git a/data/cursors/zone_fish_invalid.cur b/data/cursors/zone_fish_invalid.cur new file mode 100644 index 0000000000000000000000000000000000000000..fc09a288647f96082b77c208602aac38ef1c994e GIT binary patch literal 4286 zcmdUzJx*OQ5QWXp0;tmR8YET`vI7>73MoPqSpf|s1tn!fNBcxWK_8{e0$xqYGPpU% z_}rX3+#mCPlwfHX-|_f-iX*NrF%=c3IfY~8z2KxlVD*j?%ZOL(peVeeF zavCIU!gQXo8Z!5B@w<_EEsBl#zI=IoFIv@nXCEBgH+`C3 z%T)dVUw0y(&mXnOk2Nso?)+o6+I-~s`P-gqzk8lnT=(9GCGtD`voD_;H|Y(rRY$Dh z4f$1k)={I$oSHnH3x1N%J5~Oaw)!#TxnEkvSMk?TgR@ORek3}z3@KNp1-!|)RqnL z84opd-e0``x3HBTzW-?yQH%A?8$Y2seKK@^ehw literal 0 HcmV?d00001 diff --git a/data/fishing/fishing.json b/data/fishing/fishing.json index e245d6f..281b189 100644 --- a/data/fishing/fishing.json +++ b/data/fishing/fishing.json @@ -253,15 +253,6 @@ "effort":100, "xp":10 }, - "ice_cube":{ - "alias":"archipelago_biome:resources:ice_cube", - "weight":1, - "is_biome":[ - "stonehearth:biome:arctic" - ], - "effort":10, - "xp":1 - }, "tropical_fish":{ "alias":"archipelago_biome:food:tropical_fish", "weight":20, diff --git a/data/traits/passion_fisher/passion_fisher_trait.png b/data/traits/passion_fisher/passion_fisher_trait.png index 0aa631a37348f4d69245e53dfc5ec47d16897cfb..28cefb9a91a408daf34b0ac799b2be30b215016d 100644 GIT binary patch delta 1507 zcmV<91swY5D~Jq`Bnkm@Qb$4o*~u(_ks%j<1+7U$K~#90{_~Hq=sUDR0Ksql#BnA{SgEOYXu=JnTvg*g&!3rWo!_L zT5T=1YbpftTKA*(-hFqPnS1BnnYnZCo%{B=`=X!DyYJ3DbLRZ!oH;Z1&1T_$hAjVo zVp-O$c6iBg2sd)GQ6F z&_rI)ek1I8cNYww9fkGX_rs-2Mb?UsC#Ik5e?2@b_MTQ>(6+^?5>9foX2art?mr+N zcdEAE-`H3gZdrU2EL*w|ip64tJ&2BEN&}N14uGOtti}ORWMw=%a3}?b2y+dNV?$}G zDD_jG@@`Zo%rKCpnvJFJxk4*svITA1Fkv=QVnMz>siPQ2_V4=?zC3y?+42-vb=WdEXxTaSpdtiAt{SS z|G?+k`k~>Gcq1dQplyD*GQkGGj+BQ~X=xqC{HxzU+(M#I^T)Tp5ZiZutwh!KB5{lp zwzb@L>^e=Ik&1^w4q;_9krN)>+n3)g-JkgJALErI;rkdZ%Z-Dk|C0_G!1JCYG6G<$#UJ(fzeKXD=pS_cCb=^aC@QxJ8CKh zh**a)SXLIAuDUk9gIcC^4P!`8E6e4wyGkO&ert|9vb8d~$PJ3-^^n&f$mHheHKLhK zU-YN6OsTGB=>bDP5_fbqA13eus4P+d2m z*xM>nGI`>E>7B3bh9l&q<-NCd!2Ij4V+5()Bj+xXD5yYt+YMmb?wNIS%N+Jh1Sian z$VWymLjT?a@K33%?R+*DC2IJe7yg2syWU|WAKUs8Y}?eujzgRBdFXq8Ka7u0!81?x zK&j-0e-jy?k#iTg3dWHWc4&y47(59*Tl8DSMgp}?_4xNcv7(}9%Zplhg1_kpCwzpI z?c~8Vp#E^xSn&VOf&aaU0jS_9QV!4?Mwn#0%jEKQy{&6R{0n9}wCdtoc_07)002ov JPDHLkV1noU>XrZi delta 5605 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 diff --git a/data/ui/start_menu.json b/data/ui/start_menu.json index 74a71bd..890971f 100644 --- a/data/ui/start_menu.json +++ b/data/ui/start_menu.json @@ -14,5 +14,19 @@ "hotkey": "" } } + }, + "zone_menu": { + "items": { + "create_fish": { + "name": "i18n(archipelago_biome:ui.game.menu.zone_menu.items.create_fish.display_name)", + "description": "i18n(archipelago_biome:ui.game.menu.zone_menu.items.create_fish.description)", + "required_job": "archipelago_biome:jobs:fisher", + "required_job_text": "i18n(archipelago_biome:ui.game.menu.zone_menu.items.create_fish.required_job_text)", + "class": "button", + "icon": "/archipelago_biome/ui/game/start_menu/images/zone_fish.png", + "sticky": true, + "hotkey_action": "zone:fish" + } + } } } \ No newline at end of file diff --git a/jobs/archer/archer_buffs/fish_in_face.png b/jobs/archer/archer_buffs/fish_in_face.png index 55928ebefbe34abf05402f8c6a6fe22043708b6d..94ae843545f289459daee64e98c5a77e5b919b76 100644 GIT binary patch delta 911 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 diff --git a/jobs/fisher/field/field.json b/jobs/fisher/field/field.json new file mode 100644 index 0000000..aa1d389 --- /dev/null +++ b/jobs/fisher/field/field.json @@ -0,0 +1,25 @@ +{ + "type": "entity", + "components": { + "stonehearth:defense_zone": {}, + "archipelago_biome:fisher_field": {}, + "stonehearth:commands": { + "commands": [ + "stonehearth:commands:destroy_item" + ] + } + }, + "entity_data": { + "archipelago_biome:fishing_spot":{}, + "stonehearth:designation": { + "allow_placed_items": false + }, + "stonehearth:item": { + "clearable": false + }, + "stonehearth:catalog": { + "display_name": "i18n(archipelago_biome:jobs.fisher.field.display_name)", + "description": "i18n(archipelago_biome:jobs.fisher.field.description)" + } + } +} \ No newline at end of file diff --git a/jobs/fisher/fisher.lua b/jobs/fisher/fisher.lua index c78653e..4289de7 100644 --- a/jobs/fisher/fisher.lua +++ b/jobs/fisher/fisher.lua @@ -112,7 +112,15 @@ function FisherClass:chose_random_fish() end local fish_key = weighted_set:choose_random() self.current_fish_key = fish_key - return self.fishing_data[level][fish_key] + local boat_effort = 1 + if radiant.entities.get_posture(self._sv._entity) == "stonehearth:in_boat" then + boat_effort = 0.8 + end + local to_AI = { + effort = self.fishing_data[level][fish_key].effort * boat_effort, + alias = self.fishing_data[level][fish_key].alias + } + return to_AI end function FisherClass:_is_valid_X(is_X, is_not_X, X_alias) diff --git a/jobs/fisher/images/faster_fishing_perk.png b/jobs/fisher/images/faster_fishing_perk.png index 0ec20f49bfc65c3fdf58efe8b6088489759a85ac..7d10c2e73965f7880a0d7d56aec85af9be7fc539 100644 GIT binary patch delta 1836 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 ihqEPHnE%uE-vIz_0VoMk6;8GQ0000
Right click to exit this mode" + } + } } }, "zones_mode": { diff --git a/locales/pt-BR.json b/locales/pt-BR.json index 84d23ab..7039f9c 100644 --- a/locales/pt-BR.json +++ b/locales/pt-BR.json @@ -659,6 +659,10 @@ } }, "fisher": { + "field": { + "display_name":"Área de Pesca", + "description":"Pescadores podem vir aqui para pescar" + }, "fisher_description": { "display_name": "Pescador", "description": "Irá pegar caranguejos, colher pérolas, e fazer outras tarefas relacionadas a água", @@ -874,6 +878,17 @@ "required_job_text": "Requer um pescador" } } + }, + "zone_menu": { + "items": { + "create_fish": { + "display_name": "Ponto de Pesca", + "description": "Marca um lugar para pescar", + "required_job_text": "Requer um pescador", + "tip_title": "Clique e arraste para marcar como local de pesca", + "tip_description": "A área será considerada um local de pesca que os pescadores podem ir para pescar.

Clique com o botão direito para sair deste modo" + } + } } }, "zones_mode": { diff --git a/manifest.json b/manifest.json index d5c2f74..f63d82f 100644 --- a/manifest.json +++ b/manifest.json @@ -72,6 +72,9 @@ "crops:palm_tree_crop": "file(entities/crops/palm_tree_crop)", + "cursors:zone_fish": "file(data/cursors/zone_fish.cur)", + "cursors:zone_fish_invalid":"file(data/cursors/zone_fish_invalid.cur)", + "data:fishing": "file(data/fishing)", "data:gm_index": "file(data/gm/gm_index.json)", @@ -169,6 +172,7 @@ "fisher:talisman": "file(jobs/fisher/fisher_bucket/fisher_bucket_talisman.json)", "fisher:workbench": "file(jobs/fisher/fisher_workbench)", "fisher:firepit": "file(jobs/fisher/fisher_firepit)", + "fisher:field": "file(jobs/fisher/field)", "kingdoms:atlanteans": "file(data/atlanteans_population.json)", "atlantean_male": "file(entities/atlanteans/male)", @@ -509,28 +513,43 @@ "class:fisher": "file(jobs/fisher/fisher.lua)", "game_master:util:choose_water_location_outside_town": "file(services/server/game_master/controllers/util/choose_water_location_outside_town.lua)" }, + "functions": { + "choose_new_fish_location": { + "controller": "file(call_handlers/fishing_call_handler.lua)", + "endpoint": "client" + }, + "create_new_field": { + "controller": "file(call_handlers/fishing_call_handler.lua)", + "endpoint": "server" + } + }, "components": { "boat_dock": "file(components/boat_dock/boat_dock.lua)", "cave": "file(components/cave/cave.lua)", "crab_spawner": "file(components/crab_spawner/crab_spawner.lua)", "dock": "file(components/dock/dock.lua)", "explosive": "file(components/explosive/explosive.lua)", + "fisher_field": "file(components/fisher_field/fisher_field.lua)", "need_water": "file(components/need_water/need_water.lua)", "trojan": "file(components/trojan/trojan.lua)", "wave": "file(components/wave/wave.lua)" }, + "component_renderers":{ + "fisher_field": "file(renderers/fisher_field/fisher_field.lua)" + }, "ui":{ "html":[ "file(ui/game/bulletin/bulletin_dialog/fisher_bulletin_dialog/fisher_bulletin_dialog.html)" ], "js":[ - "file(ui/shell/select_settlement/map.js)", - "file(ui/game/bulletin/bulletin_dialog/fisher_bulletin_dialog/fisher_bulletin_dialog.js)" + "file(ui/game/bulletin/bulletin_dialog/fisher_bulletin_dialog/fisher_bulletin_dialog.js)", + "file(ui/game/start_menu/start_menu.js)", + "file(ui/shell/select_settlement/map.js)" ], "less":[ "file(jobs/fisher/skin/workshop.less)", - "file(ui/shell/select_settlement/select_settlement.less)", - "file(ui/game/bulletin/bulletin_dialog/fisher_bulletin_dialog/fisher_bulletin_dialog.less)" + "file(ui/game/bulletin/bulletin_dialog/fisher_bulletin_dialog/fisher_bulletin_dialog.less)", + "file(ui/shell/select_settlement/select_settlement.less)" ] } } \ No newline at end of file diff --git a/renderers/fisher_field/fisher_field.lua b/renderers/fisher_field/fisher_field.lua new file mode 100644 index 0000000..e62b43b --- /dev/null +++ b/renderers/fisher_field/fisher_field.lua @@ -0,0 +1,41 @@ +local ZoneRenderer = require 'stonehearth.renderers.zone_renderer' +local Color4 = _radiant.csg.Color4 +local Point2 = _radiant.csg.Point2 + +local FisherFieldRenderer = class() + +function FisherFieldRenderer:initialize(render_entity, datastore) + self._datastore = datastore + + self._zone_renderer = ZoneRenderer(render_entity) + :set_designation_colors(Color4(129, 192, 165, 255), Color4(129, 192, 165, 255)) + :set_ground_colors(Color4(77, 62, 38, 10), Color4(77, 62, 38, 30)) + + self._datastore_trace = self._datastore:trace_data('rendering fisher field') + :on_changed( + function() + self:_update() + end + ) + :push_object_state() +end + +function FisherFieldRenderer:destroy() + if self._datastore_trace then + self._datastore_trace:destroy() + self._datastore_trace = nil + end + + self._zone_renderer:destroy() +end + +function FisherFieldRenderer:_update() + local data = self._datastore:get_data() + local size = data.size + local items = {} + + self._zone_renderer:set_size(size) + self._zone_renderer:set_current_items(items) +end + +return FisherFieldRenderer \ No newline at end of file diff --git a/ui/game/start_menu/images/zone_fish.png b/ui/game/start_menu/images/zone_fish.png new file mode 100644 index 0000000000000000000000000000000000000000..37adc940bc46a51a4304e5d0906f87527c1c58c7 GIT binary patch literal 365 zcmeAS@N?(olHy`uVBq!ia0vp^ULefE3?$$EyYB>~7>k44ofvPP)Tsw@I14-?iy0WW zg+Z8+Vb&Z8prCYsPlzj!)=q6v^h#_zurz1Y6}zfc(J2`xuH54^^WTxNE*>cT+SA1` zq+-s~Ya98R3?U+Yctb()0xnIp3T)_Uc7)HTyKF%h~#T4ZrwVPKdvd z&1F9DBl1nsO}{1IDmB{g2deu_lz-{){M)hXD<19L6&UjD*@sKZf9>%r{l=ZTpzXn7 zi>Vf+|6(2nd{hb)zq{1w>H3LRgcXyg8ftetoDPu;R0v#9;o58dY*p#ash+3qug~#4 zHBBQHB5;AD(jqj`9pE& zvIClRr7q#Ka<2MqoPDM=eyWDq|0U0Uu`378uGZP^dF4hWL$zk@^|ONO&H=s6;OXk; Jvd$@?2>>_jnl%6b literal 0 HcmV?d00001 diff --git a/ui/game/start_menu/start_menu.js b/ui/game/start_menu/start_menu.js new file mode 100644 index 0000000..559f13e --- /dev/null +++ b/ui/game/start_menu/start_menu.js @@ -0,0 +1,31 @@ +App.StonehearthStartMenuView.reopen({ + init: function() { + var self = this; + + self.menuActions.create_fish = function() { + self.createFish(); + } + + self._super(); + }, + + createFish: function() { + var self = this; + + App.setGameMode('zones'); + var tip = App.stonehearthClient.showTip('archipelago_biome:ui.game.menu.zone_menu.items.create_fish.tip_title', + 'archipelago_biome:ui.game.menu.zone_menu.items.create_fish.tip_description', { i18n: true }); + + return App.stonehearthClient._callTool('createFish', function(){ + return radiant.call('archipelago_biome:choose_new_fish_location') + .done(function(response) { + radiant.call('radiant:play_sound', {'track' : 'stonehearth:sounds:place_structure'} ); + radiant.call('stonehearth:select_entity', response.field); + self.createFish(); + }) + .fail(function(response) { + App.stonehearthClient.hideTip(tip); + }); + }); + } +}); \ No newline at end of file diff --git a/ui/shell/select_settlement/images/wildlife.png b/ui/shell/select_settlement/images/wildlife.png index 7395428ee82ad208bde57b62e157d53bf2f0e146..e42463c0e1ee042bb4bb7235dea6ab97b1c3ef77 100644 GIT binary patch delta 243 zcmX>oIgM$8gcu7m0|SHk23rFl#aJBV?!%It(vvfH6%ulr{9Qg;`gZ8D5b>*SamX>Gu` zEk`$qCyP1wR^yIiS!Skek6#@!*#0^v_3-YUx5_qZe#u*S)B0cY$;-caeBbY^WZ{_7 o6X$WP(sYOKw3|0li=WFsV_76%H{B}RZVJftp00i_>zopr0IvRF*#H0l delta 3254 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 diff --git a/ui/shell/select_settlement/images/wildlife_empty.png b/ui/shell/select_settlement/images/wildlife_empty.png index 9a2c6ae4a8fb592efc3e2613a7bdacf3cafbe130..7b6f00617df2c68792ddb32d46bcd4e5830bc78c 100644 GIT binary patch delta 156 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 diff --git a/update_log.txt b/update_log.txt index 44145c7..8ccb0d9 100644 --- a/update_log.txt +++ b/update_log.txt @@ -1,12 +1,12 @@ Additions: -Jellyfish enemies -Seaweed seeds, so you can grow more of it (drop from seaweed or crafted by herbalist) +Fishing zones. Draw it at the water edge and the fisher will be able to fish there. Changes: +With boat docks, fisher can go fish with boats on those paths +Updated old fish images with a new fish design Changes for ACE: Fixes: -(for ACE mod) -Fixed bug with seed crafting while ACE auto craft is on. \ No newline at end of file +(for ACE mod) \ No newline at end of file