代码来源于“易宁”大佬的分享,仅供学习,不要直接复制粘贴。
原帖链接:http://bbs.3dmgame.com/thread-3859071-1-1.html
1
2二一六.鬼影重重(夜晚墓地有大量亡魂游荡,购买亡魂之心让主角变身亡魂)
3
4 1.用MT管理器打开游戏目录/assets/scripts/prefabs/gravestone.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容:
5
6local function createghostnpc(inst)
7 for k = 1,math.random(3,7) do
8 local pt = inst:GetPosition()
9 local ghostnpc = SpawnPrefab("deadlyfeast")
10 ghostnpc.Transform:SetPosition(pt.x+(math.random(20)-math.random(20)), 0, pt.z+(math.random(20)-math.random(20)))
11 ghostnpc.entity:AddSoundEmitter()
12 ghostnpc.AnimState:SetBank("ghost")
13 ghostnpc.AnimState:SetBuild("ghost_build")
14 ghostnpc.AnimState:PlayAnimation("idle", true)
15 ghostnpc.Transform:SetFourFaced()
16 MakeGhostPhysics(ghostnpc, 1, .5)
17 local minimap = ghostnpc.entity:AddMiniMapEntity()
18 minimap:SetIcon("whitespider_den.png")
19 ghostnpc.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
20 local light = ghostnpc.entity:AddLight()
21 light:SetIntensity(.6)
22 light:SetRadius(.5)
23 light:SetFalloff(.6)
24 light:Enable(true)
25 light:SetColour(180/255, 195/255, 225/255)
26 local brain = require "brains/leifbrain"
27 ghostnpc:SetBrain(brain)
28 ghostnpc:AddComponent("locomotor")
29 ghostnpc.components.locomotor.walkspeed = 5
30 ghostnpc.components.locomotor.runspeed = 5
31 ghostnpc:SetStateGraph("SGghost")
32 ghostnpc:AddTag("ghostnpcs")
33 ghostnpc:RemoveComponent("edible")
34 ghostnpc:RemoveComponent("inventoryitem")
35 ghostnpc:RemoveTag("meat")
36 ghostnpc:AddComponent("sanityaura")
37 ghostnpc.components.sanityaura.aura = -TUNING.SANITYAURA_SMALL
38 ghostnpc:AddComponent("health")
39 ghostnpc.components.health:SetMaxHealth(500)
40 ghostnpc:AddComponent("trader")
41 ghostnpc.components.trader:SetAcceptTest(function(ghostnpc, item)
42 if GetPlayer().components.inventory:Has("goldnugget", 30) then
43 if item.prefab == "goldnugget" then
44 return true
45 end
46 end
47 return false
48 end )
49 ghostnpc.components.trader.onaccept = function(ghostnpc, giver, item)
50 GetPlayer().components.inventory:ConsumeByName("goldnugget", 29)
51 local ghostheart = SpawnPrefab("deadlyfeast")
52 ghostheart.AnimState:SetBank("egg")
53 ghostheart.AnimState:SetBuild("tallbird_egg")
54 ghostheart.AnimState:PlayAnimation("cooked")
55 ghostheart.components.inventoryitem:ChangeImageName("tallbirdegg_cooked")
56 ghostheart:RemoveComponent("edible")
57 ghostheart:RemoveTag("meat")
58 ghostheart:AddComponent("equippable")
59 ghostheart.components.equippable:SetOnEquip( function(ghostheart, owner)
60 if owner == GetPlayer() and not GetPlayer():HasTag("poisoning") and not GetPlayer():HasTag("fever") then
61 owner.components.locomotor:Stop()
62 owner.components.playercontroller:Enable(false)
63 owner:DoTaskInTime(0.3, function()
64 SpawnPrefab("collapse_big").Transform:SetPosition(owner.Transform:GetWorldPosition())
65 owner.AnimState:SetBank("ghost")
66 owner.AnimState:SetBuild("ghost_build")
67 owner:SetStateGraph("SGghost")
68 owner.AnimState:PlayAnimation("idle", true)
69 owner.Transform:SetScale(1.2,1.2,1.2)
70 local shadow = owner.entity:AddDynamicShadow()
71 shadow:SetSize( 0, 0 )
72 owner.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
73 local light = owner.entity:AddLight()
74 light:SetIntensity(.6)
75 light:SetRadius(20)
76 light:SetFalloff(.6)
77 light:Enable(true)
78 light:SetColour(180/255, 195/255, 225/255)
79 owner.components.locomotor.walkspeed = 20
80 owner.components.locomotor.runspeed = 20
81 owner.components.health:DoDelta(owner.components.health.maxhealth)
82 owner.components.health:SetInvincible(true)
83 owner.components.hunger:DoDelta(owner.components.hunger.max)
84 owner.components.hunger:Pause()
85 owner.components.sanity:DoDelta(owner.components.sanity.max)
86 owner.components.sanity.ignore = true
87 owner.components.combat:SetDefaultDamage(1000)
88 owner:AddComponent("aura")
89 owner.components.aura.radius = 3
90 owner.components.aura.tickperiod = 0.5
91 owner.components.aura.ignoreallies = true
92 owner.components.aura.auratestfn = function(ghostnpc, target)
93 if target.components.combat.target == GetPlayer() or GetPlayer().components.combat.target == target then
94 return true
95 end
96 return false
97 end
98 owner.components.temperature:SetTemp(20)
99 owner.components.playercontroller:Enable(true)
100 end )
101 end
102 end )
103 ghostheart.components.equippable:SetOnUnequip( function(ghostheart, owner)
104 SpawnPrefab("collapse_big").Transform:SetPosition(owner.Transform:GetWorldPosition())
105 owner.components.locomotor:Stop()
106 owner.components.playercontroller:Enable(false)
107 owner:DoTaskInTime(0.3, function()
108 owner.AnimState:SetBank("wilson")
109 if GetPlayer().prefab == "wilson" then owner.AnimState:SetBuild("wilson") end
110 if GetPlayer().prefab == "wendy" then owner.AnimState:SetBuild("wendy") end
111 if GetPlayer().prefab == "wes" then owner.AnimState:SetBuild("wes") end
112 if GetPlayer().prefab == "wickerbottom" then owner.AnimState:SetBuild("wickerbottom") end
113 if GetPlayer().prefab == "willow" then owner.AnimState:SetBuild("willow") end
114 if GetPlayer().prefab == "wolfgang" then owner.AnimState:SetBuild("wolfgang") end
115 if GetPlayer().prefab == "wx78" then owner.AnimState:SetBuild("wx78") end
116 if GetPlayer().prefab == "woodie" then owner.AnimState:SetBuild("woodie") end
117 if GetPlayer().prefab == "waxwell" then owner.AnimState:SetBuild("waxwell") end
118 if GetPlayer().prefab == "wathgrithr" then owner.AnimState:SetBuild("wathgrithr") end
119 if GetPlayer().prefab == "webber" then owner.AnimState:SetBuild("webber") end
120 owner:SetStateGraph("SGwilson")
121 owner.AnimState:PlayAnimation("idle")
122 owner.Transform:SetScale(1,1,1)
123 local shadow = owner.entity:AddDynamicShadow()
124 shadow:SetSize( 1.3, .6 )
125 owner.AnimState:SetBloomEffectHandle("")
126 owner.Light:Enable(false)
127 owner.components.locomotor.walkspeed = TUNING.WILSON_WALK_SPEED
128 owner.components.locomotor.runspeed = TUNING.WILSON_RUN_SPEED
129 owner.components.health:SetInvincible(false)
130 owner.components.hunger:Resume()
131 owner.components.sanity.ignore = false
132 owner.components.combat:SetDefaultDamage(TUNING.UNARMED_DAMAGE)
133 owner.components.combat.hiteffectsymbol = "torso"
134 owner:RemoveComponent("aura")
135 owner.components.temperature:SetTemp(nil)
136 owner.components.playercontroller:Enable(true)
137 ghostheart:Remove()
138 end )
139 end )
140 ghostheart.components.equippable.equipslot = EQUIPSLOTS.HANDS
141 ghostheart:AddTag("ghostheart")
142 GetPlayer().components.inventory:GiveItem(ghostheart)
143 end
144 ghostnpc:AddComponent("combat")
145 ghostnpc.components.combat:SetDefaultDamage(3)
146 ghostnpc.components.combat:SetAttackPeriod(1)
147 ghostnpc.components.combat:SetRetargetFunction(2, function(ghostnpc)
148 if not ghostnpc.components.health:IsDead() then
149 return FindEntity(ghostnpc, 25, function(guy)
150 if guy:HasTag("monster") then return guy end
151 if guy:HasTag("player") and guy.components.inventory and not guy.components.inventory:FindItem(function(item) return item.prefab == "nightmarefuel" end ) then return guy end
152 end )
153 end
154 end )
155 ghostnpc:ListenForEvent("attacked", function(ghostnpc, data)
156 ghostnpc.components.combat:SetTarget(data.attacker)
157 ghostnpc.components.combat:ShareTarget(data.attacker, 35, function(dude) return dude:HasTag("ghostnpcs") and not dude.components.health:IsDead() end, 5)
158 end )
159 ghostnpc:AddComponent("aura")
160 ghostnpc.components.aura.radius = 2
161 ghostnpc.components.aura.tickperiod = 1
162 ghostnpc.components.aura.ignoreallies = true
163 ghostnpc.components.aura.auratestfn = function(ghostnpc, target)
164 if target:HasTag("ghostnpcs") then return false end
165 if target.components.combat.target == ghostnpc or ghostnpc.components.combat.target == target then
166 return true
167 end
168 end
169 ghostnpc:ListenForEvent("death", function()
170 local gems = {"purplegem","bluegem","redgem","orangegem","yellowgem","greengem","thulecite","goldnugget"}
171 local gem = gems[math.random(#gems)]
172 SpawnPrefab(gem).Transform:SetPosition(ghostnpc.Transform:GetWorldPosition())
173 end )
174 ghostnpc:ListenForEvent( "daytime", function() ghostnpc:Remove() end , GetWorld())
175 end
176end
177 inst:ListenForEvent( "dusktime", function() createghostnpc(inst) end , GetWorld())
178
179
180 2.用MT管理器打开游戏目录/assets/scripts/prefabs/deadlyfeast.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容:
181
182local function onsave(inst, data)
183 if inst:HasTag("ghostnpcs") then
184 data.ghostnpcs = true
185 end
186 if inst:HasTag("ghostheart") then
187 data.ghostheart = true
188 end
189end
190local function onload(inst, data)
191 if data and data.ghostnpcs then
192 inst.entity:AddSoundEmitter()
193 inst.AnimState:SetBank("ghost")
194 inst.AnimState:SetBuild("ghost_build")
195 inst.AnimState:PlayAnimation("idle", true)
196 inst.Transform:SetFourFaced()
197 MakeGhostPhysics(inst, 1, .5)
198 local minimap = inst.entity:AddMiniMapEntity()
199 minimap:SetIcon("whitespider_den.png")
200 inst.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
201 local light = inst.entity:AddLight()
202 light:SetIntensity(.6)
203 light:SetRadius(.5)
204 light:SetFalloff(.6)
205 light:Enable(true)
206 light:SetColour(180/255, 195/255, 225/255)
207 local brain = require "brains/leifbrain"
208 inst:SetBrain(brain)
209 inst:AddComponent("locomotor")
210 inst.components.locomotor.walkspeed = 5
211 inst.components.locomotor.runspeed = 5
212 inst:SetStateGraph("SGghost")
213 inst:AddTag("ghostnpcs")
214 inst:RemoveComponent("edible")
215 inst:RemoveComponent("inventoryitem")
216 inst:RemoveTag("meat")
217 inst:AddComponent("sanityaura")
218 inst.components.sanityaura.aura = -TUNING.SANITYAURA_SMALL
219 inst:AddComponent("health")
220 inst.components.health:SetMaxHealth(500)
221 inst:AddComponent("trader")
222 inst.components.trader:SetAcceptTest(function(inst, item)
223 if GetPlayer().components.inventory:Has("goldnugget", 30) then
224 if item.prefab == "goldnugget" then
225 return true
226 end
227 end
228 return false
229 end )
230 inst.components.trader.onaccept = function(inst, giver, item)
231 GetPlayer().components.inventory:ConsumeByName("goldnugget", 29)
232 local ghostheart = SpawnPrefab("deadlyfeast")
233 ghostheart.AnimState:SetBank("egg")
234 ghostheart.AnimState:SetBuild("tallbird_egg")
235 ghostheart.AnimState:PlayAnimation("cooked")
236 ghostheart.components.inventoryitem:ChangeImageName("tallbirdegg_cooked")
237 ghostheart:RemoveComponent("edible")
238 ghostheart:RemoveTag("meat")
239 ghostheart:AddComponent("equippable")
240 ghostheart.components.equippable:SetOnEquip( function(ghostheart, owner)
241 if owner == GetPlayer() and not GetPlayer():HasTag("poisoning") and not GetPlayer():HasTag("fever") then
242 owner.components.locomotor:Stop()
243 owner.components.playercontroller:Enable(false)
244 owner:DoTaskInTime(0.3, function()
245 SpawnPrefab("collapse_big").Transform:SetPosition(owner.Transform:GetWorldPosition())
246 owner.AnimState:SetBank("ghost")
247 owner.AnimState:SetBuild("ghost_build")
248 owner:SetStateGraph("SGghost")
249 owner.AnimState:PlayAnimation("idle", true)
250 owner.Transform:SetScale(1.2,1.2,1.2)
251 local shadow = owner.entity:AddDynamicShadow()
252 shadow:SetSize( 0, 0 )
253 owner.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
254 local light = owner.entity:AddLight()
255 light:SetIntensity(.6)
256 light:SetRadius(20)
257 light:SetFalloff(.6)
258 light:Enable(true)
259 light:SetColour(180/255, 195/255, 225/255)
260 owner.components.locomotor.walkspeed = 20
261 owner.components.locomotor.runspeed = 20
262 owner.components.health:DoDelta(owner.components.health.maxhealth)
263 owner.components.health:SetInvincible(true)
264 owner.components.hunger:DoDelta(owner.components.hunger.max)
265 owner.components.hunger:Pause()
266 owner.components.sanity:DoDelta(owner.components.sanity.max)
267 owner.components.sanity.ignore = true
268 owner.components.combat:SetDefaultDamage(1000)
269 owner:AddComponent("aura")
270 owner.components.aura.radius = 3
271 owner.components.aura.tickperiod = 0.5
272 owner.components.aura.ignoreallies = true
273 owner.components.aura.auratestfn = function(inst, target)
274 if target.components.combat.target == GetPlayer() or GetPlayer().components.combat.target == target then
275 return true
276 end
277 return false
278 end
279 owner.components.temperature:SetTemp(20)
280 owner.components.playercontroller:Enable(true)
281 end )
282 end
283 end )
284 ghostheart.components.equippable:SetOnUnequip( function(ghostheart, owner)
285 SpawnPrefab("collapse_big").Transform:SetPosition(owner.Transform:GetWorldPosition())
286 owner.components.locomotor:Stop()
287 owner.components.playercontroller:Enable(false)
288 owner:DoTaskInTime(0.3, function()
289 owner.AnimState:SetBank("wilson")
290 if GetPlayer().prefab == "wilson" then owner.AnimState:SetBuild("wilson") end
291 if GetPlayer().prefab == "wendy" then owner.AnimState:SetBuild("wendy") end
292 if GetPlayer().prefab == "wes" then owner.AnimState:SetBuild("wes") end
293 if GetPlayer().prefab == "wickerbottom" then owner.AnimState:SetBuild("wickerbottom") end
294 if GetPlayer().prefab == "willow" then owner.AnimState:SetBuild("willow") end
295 if GetPlayer().prefab == "wolfgang" then owner.AnimState:SetBuild("wolfgang") end
296 if GetPlayer().prefab == "wx78" then owner.AnimState:SetBuild("wx78") end
297 if GetPlayer().prefab == "woodie" then owner.AnimState:SetBuild("woodie") end
298 if GetPlayer().prefab == "waxwell" then owner.AnimState:SetBuild("waxwell") end
299 if GetPlayer().prefab == "wathgrithr" then owner.AnimState:SetBuild("wathgrithr") end
300 if GetPlayer().prefab == "webber" then owner.AnimState:SetBuild("webber") end
301 owner:SetStateGraph("SGwilson")
302 owner.AnimState:PlayAnimation("idle")
303 owner.Transform:SetScale(1,1,1)
304 local shadow = owner.entity:AddDynamicShadow()
305 shadow:SetSize( 1.3, .6 )
306 owner.AnimState:SetBloomEffectHandle("")
307 owner.Light:Enable(false)
308 owner.components.locomotor.walkspeed = TUNING.WILSON_WALK_SPEED
309 owner.components.locomotor.runspeed = TUNING.WILSON_RUN_SPEED
310 owner.components.health:SetInvincible(false)
311 owner.components.hunger:Resume()
312 owner.components.sanity.ignore = false
313 owner.components.combat:SetDefaultDamage(TUNING.UNARMED_DAMAGE)
314 owner.components.combat.hiteffectsymbol = "torso"
315 owner:RemoveComponent("aura")
316 owner.components.temperature:SetTemp(nil)
317 owner.components.playercontroller:Enable(true)
318 ghostheart:Remove()
319 end )
320 end )
321 ghostheart.components.equippable.equipslot = EQUIPSLOTS.HANDS
322 ghostheart:AddTag("ghostheart")
323 GetPlayer().components.inventory:GiveItem(ghostheart)
324 end
325 inst:AddComponent("combat")
326 inst.components.combat:SetDefaultDamage(3)
327 inst.components.combat:SetAttackPeriod(1)
328 inst.components.combat:SetRetargetFunction(2, function(inst)
329 if not inst.components.health:IsDead() then
330 return FindEntity(inst, 25, function(guy)
331 if guy:HasTag("monster") then return guy end
332 if guy:HasTag("player") and guy.components.inventory and not guy.components.inventory:FindItem(function(item) return item.prefab == "nightmarefuel" end ) then return guy end
333 end )
334 end
335 end )
336 inst:ListenForEvent("attacked", function(inst, data)
337 inst.components.combat:SetTarget(data.attacker)
338 inst.components.combat:ShareTarget(data.attacker, 35, function(dude) return dude:HasTag("ghostnpcs") and not dude.components.health:IsDead() end, 5)
339 end )
340 inst:AddComponent("aura")
341 inst.components.aura.radius = 2
342 inst.components.aura.tickperiod = 1
343 inst.components.aura.ignoreallies = true
344 inst.components.aura.auratestfn = function(inst, target)
345 if target:HasTag("ghostnpcs") then return false end
346 if target.components.combat.target == inst or inst.components.combat.target == target then
347 return true
348 end
349 end
350 inst:ListenForEvent("death", function()
351 local gems = {"purplegem","bluegem","redgem","orangegem","yellowgem","greengem","thulecite","goldnugget"}
352 local gem = gems[math.random(#gems)]
353 SpawnPrefab(gem).Transform:SetPosition(inst.Transform:GetWorldPosition())
354 end )
355 inst:ListenForEvent( "daytime", function() inst:Remove() end , GetWorld())
356 end
357 if data and data.ghostheart then
358 inst.AnimState:SetBank("egg")
359 inst.AnimState:SetBuild("tallbird_egg")
360 inst.AnimState:PlayAnimation("cooked")
361 inst.components.inventoryitem:ChangeImageName("tallbirdegg_cooked")
362 inst:RemoveComponent("edible")
363 inst:RemoveTag("meat")
364 inst:AddComponent("equippable")
365 inst.components.equippable:SetOnEquip( function(inst, owner)
366 if owner == GetPlayer() and not GetPlayer():HasTag("poisoning") and not GetPlayer():HasTag("fever") then
367 owner.components.locomotor:Stop()
368 owner.components.playercontroller:Enable(false)
369 owner:DoTaskInTime(0.3, function()
370 SpawnPrefab("collapse_big").Transform:SetPosition(owner.Transform:GetWorldPosition())
371 owner.AnimState:SetBank("ghost")
372 owner.AnimState:SetBuild("ghost_build")
373 owner:SetStateGraph("SGghost")
374 owner.AnimState:PlayAnimation("idle", true)
375 owner.Transform:SetScale(1.2,1.2,1.2)
376 local shadow = owner.entity:AddDynamicShadow()
377 shadow:SetSize( 0, 0 )
378 owner.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
379 local light = owner.entity:AddLight()
380 light:SetIntensity(.6)
381 light:SetRadius(20)
382 light:SetFalloff(.6)
383 light:Enable(true)
384 light:SetColour(180/255, 195/255, 225/255)
385 owner.components.locomotor.walkspeed = 20
386 owner.components.locomotor.runspeed = 20
387 owner.components.health:DoDelta(owner.components.health.maxhealth)
388 owner.components.health:SetInvincible(true)
389 owner.components.hunger:DoDelta(owner.components.hunger.max)
390 owner.components.hunger:Pause()
391 owner.components.sanity:DoDelta(owner.components.sanity.max)
392 owner.components.sanity.ignore = true
393 owner.components.combat:SetDefaultDamage(1000)
394 owner:AddComponent("aura")
395 owner.components.aura.radius = 3
396 owner.components.aura.tickperiod = 0.5
397 owner.components.aura.ignoreallies = true
398 owner.components.aura.auratestfn = function(ghostnpc, target)
399 if target.components.combat.target == GetPlayer() or GetPlayer().components.combat.target == target then
400 return true
401 end
402 return false
403 end
404 owner.components.temperature:SetTemp(20)
405 owner.components.playercontroller:Enable(true)
406 end )
407 end
408 end )
409 inst.components.equippable:SetOnUnequip( function(inst, owner)
410 SpawnPrefab("collapse_big").Transform:SetPosition(owner.Transform:GetWorldPosition())
411 owner.components.locomotor:Stop()
412 owner.components.playercontroller:Enable(false)
413 owner:DoTaskInTime(0.3, function()
414 owner.AnimState:SetBank("wilson")
415 if GetPlayer().prefab == "wilson" then owner.AnimState:SetBuild("wilson") end
416 if GetPlayer().prefab == "wendy" then owner.AnimState:SetBuild("wendy") end
417 if GetPlayer().prefab == "wes" then owner.AnimState:SetBuild("wes") end
418 if GetPlayer().prefab == "wickerbottom" then owner.AnimState:SetBuild("wickerbottom") end
419 if GetPlayer().prefab == "willow" then owner.AnimState:SetBuild("willow") end
420 if GetPlayer().prefab == "wolfgang" then owner.AnimState:SetBuild("wolfgang") end
421 if GetPlayer().prefab == "wx78" then owner.AnimState:SetBuild("wx78") end
422 if GetPlayer().prefab == "woodie" then owner.AnimState:SetBuild("woodie") end
423 if GetPlayer().prefab == "waxwell" then owner.AnimState:SetBuild("waxwell") end
424 if GetPlayer().prefab == "wathgrithr" then owner.AnimState:SetBuild("wathgrithr") end
425 if GetPlayer().prefab == "webber" then owner.AnimState:SetBuild("webber") end
426 owner:SetStateGraph("SGwilson")
427 owner.AnimState:PlayAnimation("idle")
428 owner.Transform:SetScale(1,1,1)
429 local shadow = owner.entity:AddDynamicShadow()
430 shadow:SetSize( 1.3, .6 )
431 owner.AnimState:SetBloomEffectHandle("")
432 owner.Light:Enable(false)
433 owner.components.locomotor.walkspeed = TUNING.WILSON_WALK_SPEED
434 owner.components.locomotor.runspeed = TUNING.WILSON_RUN_SPEED
435 owner.components.health:SetInvincible(false)
436 owner.components.hunger:Resume()
437 owner.components.sanity.ignore = false
438 owner.components.combat:SetDefaultDamage(TUNING.UNARMED_DAMAGE)
439 owner.components.combat.hiteffectsymbol = "torso"
440 owner:RemoveComponent("aura")
441 owner.components.temperature:SetTemp(nil)
442 owner.components.playercontroller:Enable(true)
443 inst:Remove()
444 end )
445 end )
446 inst.components.equippable.equipslot = EQUIPSLOTS.HANDS
447 inst:AddTag("ghostheart")
448 end
449end
450 inst.OnSave = onsave
451 inst.OnLoad = onload
452
453 即可在夜晚时,墓地有大量亡魂游荡,会主动攻击你,且靠近它们会降脑,消灭亡魂可获得宝石、铥矿石、黄金。亡魂在小地图上显示为白蜘蛛的图标。如果身上携带了噩梦燃料,亡魂就不会主动攻击你,给亡魂30个黄金(拿着黄金对亡魂点鼠标左键),可购买亡魂之心,装备它即可变身亡魂,生命、饥饿、脑全部锁死,按Ctrl + 鼠标左键攻击,且任何攻击你的敌人都会被自动烫死。卸载亡魂之心即可变回人,同时亡魂之心消失,想再变身就多买一些吧。如果修改了“小病小灾”,在主角感冒和食物中毒时,装备亡魂之心也不会变身