Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
97 commits
Select commit Hold shift + click to select a range
029fca1
wilson
Ziwbi Mar 20, 2025
fbd8c5e
willow
Ziwbi Mar 20, 2025
2dc5cb2
fix bernie
Ziwbi Mar 20, 2025
2436ffd
wendy and abigail
Ziwbi Mar 20, 2025
8f26be1
todo: abigail strings
Ziwbi Mar 20, 2025
bdf86ba
wolfgang
Ziwbi Mar 20, 2025
988276f
wx78
Ziwbi Mar 20, 2025
0609791
wickerbottom
Ziwbi Mar 20, 2025
08cf091
wes
Ziwbi Mar 20, 2025
371520a
waxwell
Ziwbi Mar 20, 2025
586623d
wathgrithr
Ziwbi Mar 21, 2025
ca9113a
webber
Ziwbi Mar 21, 2025
2ce3568
winona
Ziwbi Mar 21, 2025
1a387fb
wormwood
Ziwbi Mar 21, 2025
7318962
woodie
Ziwbi Mar 21, 2025
6168bd6
beaverness
Ziwbi Mar 21, 2025
6e71500
beaverness ui
Ziwbi Mar 21, 2025
3668dd4
fix beaverness
Ziwbi Mar 21, 2025
4cef902
give webber disguisehat
Ziwbi Mar 21, 2025
05af43f
remove dst characters
Ziwbi Mar 21, 2025
48eea34
abigail inspection string
Ziwbi Mar 21, 2025
65e35dd
remove dst character recipes
Ziwbi Mar 21, 2025
36e7bf0
fix character stats in slection screen
Ziwbi Apr 16, 2025
0a60d3a
奶奶的应用园艺学无法将植物稳定催熟至最大阶段
Noctice Apr 18, 2025
7530a93
优化了沃尔夫冈体型相关的写法
Noctice Apr 18, 2025
0b4c462
修复了薇洛被火烧导致崩溃的问题
Noctice Apr 18, 2025
9435ae5
薇洛基础内容确定
Noctice Apr 18, 2025
b546a19
沃尔夫冈内容相关
Noctice Apr 18, 2025
1d226d9
沃尔夫冈数值优雅化
Noctice Apr 18, 2025
ae4e78e
体积缩放型沃尔夫冈
Noctice Apr 20, 2025
25b09a9
添加了不同体型的耐久消耗以及工作倍率区分
Noctice Apr 20, 2025
51af0fa
调整了扩大和微缩机制的部分数值
Noctice Apr 20, 2025
0038f5d
体型相关代码优化
Noctice Apr 21, 2025
7bdfa75
添加了体型缩放机制的血量上限变化
Noctice Apr 21, 2025
535dee2
温蒂基础代码修复
Noctice Apr 22, 2025
e294c31
优化了WX-78的部分代码
Noctice Apr 23, 2025
c20822d
优化了WX的部分写法
Noctice Apr 23, 2025
8d83d51
维克巴顿完善
Noctice Apr 23, 2025
dcf5e1b
Merge branch 'master' into classic_characters
Legend-Master Apr 23, 2025
36c3901
改为由新伍迪代码做减法
Noctice Apr 24, 2025
bb2b179
精简了伍迪的代码
Noctice Apr 24, 2025
2686b68
wes' misfortune
Ziwbi May 10, 2025
da2c54f
fix wes missing inspect anim
Ziwbi May 10, 2025
bb630b6
添加了韦斯的吹气球功能
Noctice May 12, 2025
aa6b891
change recipe ingredient for wathgrithr
Ziwbi May 13, 2025
1a988c6
fix typo
Ziwbi May 13, 2025
c2c96b2
modular world-specific recipe
Ziwbi May 14, 2025
983d360
remove spider_healer, add spider_whistle
Ziwbi May 14, 2025
f629a35
伍迪部分内容
Noctice May 15, 2025
0f84248
更多伍迪内容
Noctice May 16, 2025
75d385d
修复了保存重载导致伍迪的隐藏容器显示的问题
Noctice May 16, 2025
30f50ee
修复了一些和伍迪保存重载有关的问题
Noctice May 16, 2025
b22082d
去除了海狸的温度保护
Noctice May 16, 2025
93dea1b
添加了海狸右键吃东西的操作
Noctice May 16, 2025
4474fd1
修复了延迟变身重载时再也不会变身的bug
Noctice May 16, 2025
9ee8bd4
修复了部分伍迪相关的bug
Noctice May 16, 2025
ec81f89
伍迪优化
Noctice May 16, 2025
26bd343
完善了伍迪的木头值机制
Noctice May 19, 2025
68501c1
edit string (#847)
Cassielu123 May 19, 2025
7293595
露西台词
Noctice May 19, 2025
7eda72e
调整了伍迪的变身数值
Noctice May 19, 2025
d9a378c
调整了伍迪的变身值相关数值
Noctice May 19, 2025
3085829
Merge branch 'master' into classic_characters
Legend-Master May 20, 2025
c41e68c
prototype waxwell shield&pillar
Ziwbi May 22, 2025
3337ae7
Merge branch 'classic_characters' of https://github.com/DST-Hamlet/Po…
Ziwbi May 22, 2025
5d24122
Merge remote-tracking branch 'origin/master' into classic_characters
Legend-Master May 30, 2025
88367dc
Merge remote-tracking branch 'origin/master' into classic_characters
Legend-Master May 30, 2025
9287ce4
Merge branch 'master' into classic_characters
Legend-Master Jun 3, 2025
36edda9
Fix merge conflict
Legend-Master Jun 3, 2025
33f510d
progress
Ziwbi Jun 10, 2025
d1a34b4
Merge branch 'classic_characters' of https://github.com/DST-Hamlet/Po…
Ziwbi Jun 19, 2025
d9dc5f0
沃姆伍德不再会因为砍高草而损失精神值
Noctice Aug 15, 2025
249300f
Spell book controls rework (#830)
Legend-Master Aug 15, 2025
e4195e0
Merge branch 'master' into classic_characters
Noctice Aug 15, 2025
e10ec7b
优化了阿比盖尔的指令交互
Noctice Aug 15, 2025
f95b507
优化了温蒂的指令动作
Noctice Aug 15, 2025
7a8308e
阿比盖尔无法在低生命的情况下被召唤
Noctice Aug 18, 2025
9ecb8de
优化了阿比盖尔的指令相关内容
Noctice Aug 19, 2025
d70c47e
温蒂复活时会清空阿比的血量,如同原版会清空阿比的等级
Noctice Aug 19, 2025
35392b5
为温蒂的指令均添加了施法距离限制
Noctice Aug 19, 2025
cd0d320
修复了浮点数误差导致阿比盖尔指令可能不执行的问题
Noctice Aug 25, 2025
c9764ca
为阿比盖尔增加了装备护甲功能
Noctice Aug 25, 2025
5d687e7
温蒂使用近战武器的耐久消耗倍率也为0.75
Noctice Aug 25, 2025
2eeacd4
Merge branch 'master' into classic_characters
Noctice Aug 27, 2025
11bdf1a
use physicsmodifiedexternally component
Ziwbi Sep 26, 2025
2d548e7
tweak chain range values
Ziwbi Sep 26, 2025
e7d5951
修复了当暗影锁链链接对象remove后崩溃的问题
Noctice Sep 26, 2025
b7032f9
添加注释
Noctice Dec 4, 2025
b801025
waxwell minion spell
Ziwbi Dec 18, 2025
5b5b1d4
waxwell minion work
Ziwbi Dec 18, 2025
f530afe
implement wxawell shield
Ziwbi Dec 18, 2025
ce760ba
implement waxwell pillar spell
Ziwbi Dec 18, 2025
16f5e8f
spellcommand added for client too
Ziwbi Dec 19, 2025
0ee586b
bufferedaction for spell
Ziwbi Dec 19, 2025
ab51e63
convert indentation to spaces
Ziwbi Dec 19, 2025
93658c8
fix crash casting multiple shields
Ziwbi Dec 19, 2025
879adaa
fix (deadly) typo
Ziwbi Dec 19, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added anim/pl_ghost_abigail.zip
Binary file not shown.
Binary file removed anim/player_action_sailing.zip
Binary file not shown.
Binary file modified anim/player_actions_hand_lens.zip
Binary file not shown.
Binary file modified anim/player_actions_panning.zip
Binary file not shown.
Binary file added anim/player_actions_sailing.zip
Binary file not shown.
Binary file modified anim/player_actions_scroll.zip
Binary file not shown.
Binary file modified anim/player_actions_shear.zip
Binary file not shown.
Binary file modified anim/player_actions_speargun.zip
Binary file not shown.
Binary file modified anim/player_actions_tap.zip
Binary file not shown.
Binary file modified anim/player_boat_death.zip
Binary file not shown.
Binary file modified anim/player_boat_onoff.zip
Binary file not shown.
Binary file modified anim/player_idles_poison.zip
Binary file not shown.
Binary file modified anim/player_lifeplant.zip
Binary file not shown.
Binary file modified anim/player_mount_actions_speargun.zip
Binary file not shown.
Binary file removed anim/player_mount_hand_lens.zip
Binary file not shown.
Binary file modified anim/player_mount_idles_poison.zip
Binary file not shown.
Binary file added anim/ui_abigail_command_5x1.zip
Binary file not shown.
Binary file added images/hud/abigail_flower_commands.tex
Binary file not shown.
12 changes: 12 additions & 0 deletions images/hud/abigail_flower_commands.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<Atlas>
<Texture filename="abigail_flower_commands.tex"/>
<Elements>
<Element name="haunt.tex" u1="0" u2="0.25" v1="0.75" v2="1"/>
<Element name="resume.tex" u1="0.25" u2="0.5" v1="0.75" v2="1"/>
<Element name="rileup.tex" u1="0.5" u2="0.75" v1="0.75" v2="1"/>
<Element name="smoothe.tex" u1="0.75" u2="1" v1="0.75" v2="1"/>
<Element name="unsummon.tex" u1="0" u2="0.25" v1="0.5" v2="0.75"/>
<Element name="freeze.tex" u1="0.75" u2="1" v1="0.5" v2="0.75"/>
<Element name="goto.tex" u1="0" u2="0.25" v1="0.25" v2="0.5"/>
</Elements>
</Atlas>
40 changes: 40 additions & 0 deletions main/RPC.lua
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,22 @@ local function printinvalid(rpcname, player)
end
end

local function IsPointInRange(player, position)
local px, _, pz = player.Transform:GetWorldPosition()
return distsq(position.x, position.z, px, pz) <= 4096
end

local function ConvertPlatformRelativePositionToAbsolutePosition(platform, relative_x, relative_z)
if not (relative_x and relative_z) then
return
end
if not platform then
return Vector3(relative_x, 0, relative_z)
end
local x, _, z = platform.entity:LocalToWorldSpace(relative_x, 0, relative_z)
return Vector3(x, 0, z)
end

AddShardModRPCHandler("Porkland", "SetAporkalypseClockRewindMult", function(shardid, rewind_mult)
if not TheWorld.ismastershard then
return
Expand Down Expand Up @@ -63,6 +79,30 @@ AddModRPCHandler("Porkland", "StrafeFacing_pl", function(player, dir)
end
end)

AddModRPCHandler("Porkland", "CastSpellCommand", function(player, item, command_id, target, x, z, platform)
if not (
checkentity(item)
and checkstring(command_id)
and optentity(target)
and optnumber(x)
and optnumber(z)
and optentity(platform)
) then
printinvalid("CastSpellCommand", player)
return
end

local playercontroller = player.components.playercontroller
if playercontroller then
local position = ConvertPlatformRelativePositionToAbsolutePosition(platform, x, z)
if not position or IsPointInRange(player, position) then
playercontroller:OnRemoteCastSpellCommand(item, command_id, position, target)
else
print("Remote left click out of range")
end
end
end)

AddClientModRPCHandler("Porkland", "interior_map", function(data)
local interiorvisitor = ThePlayer and ThePlayer.replica.interiorvisitor
if interiorvisitor then
Expand Down
60 changes: 58 additions & 2 deletions main/actions.lua
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ if not rawget(_G, "HotReloading") then
WEIGHDOWN = Action({distance = 1.5}),
DISARM = Action({priority = 1, distance = 1.5}),
REARM = Action({priority = 1, distance = 1.5}),
SPY = Action({distance = 2, mount_valid = true}),
SPY = Action({distance = 2}), -- 骑在牛上用放大镜不太合理
PUTONSHELF = Action({ distance = 1.5 }),
TAKEFROMSHELF = Action({ distance = 1.5, priority = 1 }),
ASSEMBLE_ROBOT = Action({}),
Expand Down Expand Up @@ -60,6 +60,9 @@ if not rawget(_G, "HotReloading") then
THROW = Action({priority = 0, invalid_hold_action = true, rmb = true, distance = 20, mount_valid = true}),

DODGE = Action({priority = -5, invalid_hold_action = true, distance = math.huge}),

-- Replacing CASTAOE for custom controls
SPELL_COMMAND = Action({mount_valid = true, distance = 35}),
}

for name, ACTION in pairs(_G.PL_ACTIONS) do
Expand Down Expand Up @@ -620,6 +623,25 @@ ACTIONS.THROW.fn = function(act)
end
end

ACTIONS.SPELL_COMMAND.stroverridefn = function(act)
return act.invobject
and act.invobject.components.spellcommand
and act.invobject.components.spellcommand:GetSeletedCommandName()
or nil
end

ACTIONS.SPELL_COMMAND.strfn = function(act)
return act.invobject and string.upper(act.invobject.prefab) or nil
end

-- TODO: This is currently unused, left here in case we want to use it in the future
ACTIONS.SPELL_COMMAND.fn = function(act)
print("WARNING: This action should not be ran directly, instead it should be intercepted and redirected to the PlayerController.OnRemoteCastSpellCommand")
-- if act.invobject.components.spellcommand then
-- return act.invobject.components.spellcommand:Run(act)
-- end
end

local _EQUIP_fn = ACTIONS.EQUIP.fn
function ACTIONS.EQUIP.fn(act, ...)
if act.doer.components.inventory and act.invobject.components.equippable.equipslot then
Expand Down Expand Up @@ -847,6 +869,14 @@ ACTIONS.ROTATE_FENCE.fn = function(act)
return _ROTATE_FENCEfn(act)
end

local castaoe_stroverridefn = ACTIONS.CASTAOE.stroverridefn
ACTIONS.CASTAOE.stroverridefn = function(act, ...)
return act.invobject
and act.invobject.components.spellcommand
and act.invobject.components.spellcommand:GetSeletedCommandName()
or castaoe_stroverridefn(act, ...)
end

-- SCENE using an object in the world
-- USEITEM using an inventory item on an object in the world
-- POINT using an inventory item on a point in the world
Expand Down Expand Up @@ -985,8 +1015,13 @@ local PL_COMPONENT_ACTIONS =
},

INVENTORY = { -- args: inst, doer, actions, right
balloonmaker = function (inst, doer, actions, right)
if doer:HasTag("balloonomancer") then
table.insert(actions, ACTIONS.MAKEBALLOON)
end
end,
livingartifact = function (inst, doer, actions, right)
if not (inst.replica.inventoryitem and inst.replica.inventoryitem:IsHeldBy(doer)) then
if not (inst.replica.inventoryitem and inst.replica.inventoryitem:IsGrandOwner(doer)) then
return
end

Expand Down Expand Up @@ -1231,6 +1266,27 @@ function POINT.fishingrod(inst, doer, pos, actions, right, target, ...)
return _POINT_fishingrod(inst, doer, pos, actions, right, target, ...)
end

-- 由于用菜单代替轮盘, 因此需要修改阿比盖尔之花的相关交互, 此函数应当在将物品拖动至人物身上时以及在非玩家所属的容器内右键时生效
function INVENTORY.summoningitem(inst, doer, actions, ...)
if doer:HasTag("ghostfriend_notsummoned") and inst.replica.inventoryitem:IsGrandOwner(doer) then
table.insert(actions, ACTIONS.CASTSUMMON)
end
end

local _USEITEM_tradable = USEITEM.tradable
function USEITEM.tradable(inst, doer, target, actions, ...)
if target:HasTag("trader") and
target:HasTag("abigail") and
not target:IsInLimbo() and
not (doer.replica.rider ~= nil and doer.replica.rider:IsRiding() and
not (target.replica.inventoryitem ~= nil and target.replica.inventoryitem:IsGrandOwner(doer))) then

table.insert(actions, ACTIONS.GIVE)
else
return _USEITEM_tradable(inst, doer, target, actions, ...)
end
end

local PlayerController = require("components/playercontroller")

local NON_AUTO_EQUIP_ACTIONS = {
Expand Down
25 changes: 23 additions & 2 deletions main/assets.lua
Original file line number Diff line number Diff line change
Expand Up @@ -264,6 +264,12 @@ PrefabFiles = {
"windswirl",
"windtrail",
"worldsound",

"woodie_beaver_bag",

"waxwell_shield",
"waxwell_pillar",
"waxwell_minion",
}

Assets = {
Expand All @@ -289,6 +295,11 @@ Assets = {
Asset("ATLAS", "images/hud/pl_mapscreen_widgets.xml"),
Asset("IMAGE", "images/hud/pl_mapscreen_widgets.tex"),

-- abigail flower spell command icons
Asset("ATLAS", "images/hud/abigail_flower_commands.xml"),
Asset("IMAGE", "images/hud/abigail_flower_commands.tex"),
Asset("ANIM", "anim/ui_abigail_command_5x1.zip"),

-- falloff
Asset("IMAGE", "levels/tiles/black_falloff.tex"),
Asset("FILE", "levels/tiles/black_falloff.xml"),
Expand Down Expand Up @@ -321,12 +332,11 @@ Assets = {
Asset("ANIM", "anim/player_actions_panning.zip"),
Asset("ANIM", "anim/player_boat_onoff.zip"),
Asset("ANIM", "anim/swap_paddle.zip"),
Asset("ANIM", "anim/player_action_sailing.zip"),
Asset("ANIM", "anim/player_actions_sailing.zip"),
Asset("ANIM", "anim/player_boat_death.zip"),
Asset("ANIM", "anim/werebeaver_boat_death.zip"),
Asset("ANIM", "anim/player_lifeplant.zip"),
Asset("ANIM", "anim/player_actions_hand_lens.zip"),
Asset("ANIM", "anim/player_mount_hand_lens.zip"),
Asset("ANIM", "anim/player_living_suit_destruct.zip"),
Asset("ANIM", "anim/player_living_suit_morph.zip"),
Asset("ANIM", "anim/player_living_suit_punch.zip"),
Expand Down Expand Up @@ -506,3 +516,14 @@ local function AddCharacter(name, gender)
end

AddCharacter("wheeler", "FEMALE")

local dst_chracters = {
"wortox",
"wurt",
"walter",
"wanda",
}

for _, v in pairs(dst_chracters) do
RemoveDefaultCharacter(v)
end
6 changes: 5 additions & 1 deletion main/constants.lua
Original file line number Diff line number Diff line change
Expand Up @@ -72,12 +72,16 @@ TECH.HOME = {
HOME = 2
}

TECH.WAXWELLJOURNAL = {
SHADOW = 4
}

-- Just an arbitrary number
BUILDMODE.HOME_DECOR = 10

LOCKTYPE.ROYAL = "royal"

-- City pigman is dont in pigman_city.lua
-- City pigman is done in pigman_city.lua

NAUGHTY_VALUE["hippopotamoose"] = 4
NAUGHTY_VALUE["pangolden"] = 4
Expand Down
36 changes: 26 additions & 10 deletions main/cooking.lua
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,32 @@ for _, recipe in pairs(foods) do
AddCookerRecipe("archive_cookpot", recipe)
end

AddCookerRecipe("smelter", {
name = "alloy",
weight = 1,
priority = 1,
cooktime = 0.2,
test = function(cooker, name, tags)
return true -- alway true
end,
no_cookbook = true
})
local smelter_recipes =
{
alloy =
{
name = "alloy",
weight = 1,
priority = 1,
cooktime = 0.2,
test = function(cooker, name, tags)
if cooker == "smelter" then
return true -- alway true
else
return false
end
end,
no_cookbook = true
},
}

for _, recipe in pairs(smelter_recipes) do
AddCookerRecipe("smelter", recipe)

AddCookerRecipe("cookpot", recipe) -- 与初版智能锅mod SmartCrockpot进行兼容(workshop-365119238)
AddCookerRecipe("portablecookpot", recipe)
AddCookerRecipe("archive_cookpot", recipe)
end

AddIngredientValues({"coffeebeans"}, {fruit = 0.5})
AddIngredientValues({"coffeebeans_cooked"}, {fruit = 1})
Expand Down
Loading