Skip to content

Commit 0fc0d05

Browse files
added sleep action
1 parent 46f85ee commit 0fc0d05

File tree

6 files changed

+94
-73
lines changed

6 files changed

+94
-73
lines changed

data/furnitures.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ furnitures.bed = function(position)
99
self.effect.needs.current.social = -2;
1010
self.effect.needs.current.sanity = -1;
1111
self.effect.needs.current.hygiene = -5;
12-
self.effect.needs.current.sleep = 5;
12+
self.effect.needs.current.sleep = 7;
1313
self.effect.needs.current.water = -1;
1414
self.effect.needs.current.food = -0.5;
1515
self.effect.needs.current.pee = 5;

main.lua

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ local Room = require("types.Room");
1616
local Creature = require("types.Creature");
1717

1818
local items = require("data.items");
19+
local furnitures = require("data.furnitures");
1920

2021
local function checkPlayer()
2122
if br.player.needs.current.health <= 0 then
@@ -222,6 +223,11 @@ br.remove = function(itemid, containerid, other)
222223
world.passTurn();
223224
end
224225

226+
br.sleep = function()
227+
player.plan("sleep",{});
228+
world.passTurn();
229+
end
230+
225231
br.items = function()
226232
for x = 1, #br.player.items do
227233
local text = x .. ". ";

types/Creature.lua

Lines changed: 84 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
local br = require("bruter.bruter")
2+
local Effect = require("types.Effect");
23
local Needs = require("types.Needs");
34
local Skills = require("types.Skills");
45
local Personality = require("types.Personality");
@@ -11,6 +12,45 @@ local Item = require("types.Item");
1112

1213
local items = require("data.items");
1314

15+
local sumEffect = function(creature,item)
16+
if not item.effect and item then
17+
item = {effect = item};
18+
end
19+
20+
for k,v in pairs(creature.needs.current) do
21+
creature.needs.current[k] = creature.needs.current[k] + item.effect.needs.current[k];
22+
if item.effect.needs.current[k] ~= 0 then
23+
print(creature.name .. " " .. k .. " changed by " .. item.effect.needs.current[k] .. " to " .. creature.needs.current[k]);
24+
end
25+
creature.needs.max[k] = creature.needs.max[k] + item.effect.needs.max[k];
26+
if item.effect.needs.max[k] ~= 0 then
27+
print(creature.name .. " " .. k .. " changed by " .. item.effect.needs.max[k] .. " to " .. creature.needs.max[k]);
28+
end
29+
creature.needs.decay[k] = creature.needs.decay[k] + item.effect.needs.decay[k];
30+
if item.effect.needs.decay[k] ~= 0 then
31+
print(creature.name .. " " .. k .. " changed by " .. item.effect.needs.decay[k] .. " to " .. creature.needs.decay[k]);
32+
end
33+
end
34+
for k,v in pairs(creature.personality) do
35+
creature.personality[k] = creature.personality[k] + item.effect.personality[k];
36+
if item.effect.personality[k] ~= 0 then
37+
print(creature.name .. " " .. k .. " changed by " .. item.effect.personality[k] .. " to " .. creature.personality[k]);
38+
end
39+
end
40+
for k,v in pairs(creature.interests) do
41+
creature.interests[k] = creature.interests[k] + item.effect.interests[k];
42+
if item.effect.interests[k] ~= 0 then
43+
print(creature.name .. " " .. k .. " changed by " .. item.effect.interests[k] .. " to " .. creature.interests[k]);
44+
end
45+
end
46+
for k,v in pairs(creature.skills) do
47+
creature.skills[k] = creature.skills[k] + item.effect.skills[k];
48+
if item.effect.skills[k] ~= 0 then
49+
print(creature.name .. " " .. k .. " changed by " .. item.effect.skills[k] .. " to " .. creature.skills[k]);
50+
end
51+
end
52+
end
53+
1454
local function creaturePassTurn(creature)
1555
creature.needs.current.food = creature.needs.current.food + creature.needs.decay.food;
1656
creature.needs.current.water = creature.needs.current.water + creature.needs.decay.water;
@@ -207,77 +247,12 @@ local creatureConsume = function(creature, world, itemid)
207247

208248
print(creature.name .. " is consuming 100ml of " .. _item.name .. " from " .. item.name);
209249

210-
for k,v in pairs(creature.needs.current) do
211-
creature.needs.current[k] = creature.needs.current[k] + _item.effect.needs.current[k];
212-
if _item.effect.needs.current[k] ~= 0 then
213-
print(creature.name .. " " .. k .. " changed by " .. _item.effect.needs.current[k] .. " to " .. creature.needs.current[k]);
214-
end
215-
creature.needs.max[k] = creature.needs.max[k] + _item.effect.needs.max[k];
216-
if _item.effect.needs.max[k] ~= 0 then
217-
print(creature.name .. " " .. k .. " changed by " .. _item.effect.needs.max[k] .. " to " .. creature.needs.max[k]);
218-
end
219-
creature.needs.decay[k] = creature.needs.decay[k] + _item.effect.needs.decay[k];
220-
if _item.effect.needs.decay[k] ~= 0 then
221-
print(creature.name .. " " .. k .. " changed by " .. _item.effect.needs.decay[k] .. " to " .. creature.needs.decay[k]);
222-
end
223-
end
250+
sumEffect(creature, _item);
224251

225-
for k,v in pairs(creature.personality) do
226-
creature.personality[k] = creature.personality[k] + _item.effect.personality[k];
227-
if _item.effect.personality[k] ~= 0 then
228-
print(creature.name .. " " .. k .. " changed by " .. _item.effect.personality[k] .. " to " .. creature.personality[k]);
229-
end
230-
end
231-
232-
for k,v in pairs(creature.interests) do
233-
creature.interests[k] = creature.interests[k] + _item.effect.interests[k];
234-
if _item.effect.interests[k] ~= 0 then
235-
print(creature.name .. " " .. k .. " changed by " .. _item.effect.interests[k] .. " to " .. creature.interests[k]);
236-
end
237-
end
238-
239-
for k,v in pairs(creature.skills) do
240-
creature.skills[k] = creature.skills[k] + _item.effect.skills[k];
241-
if _item.effect.skills[k] ~= 0 then
242-
print(creature.name .. " " .. k .. " changed by " .. _item.effect.skills[k] .. " to " .. creature.skills[k]);
243-
end
244-
end
245-
246-
print (creature.name .. "'s " .. item.name .. " has " .. #item.items*100 .. "ml left");
252+
print(creature.name .. "'s " .. item.name .. " has " .. #item.items*100 .. "ml left");
247253
end
248254
else
249-
for k,v in pairs(creature.needs.current) do
250-
creature.needs.current[k] = creature.needs.current[k] + item.effect.needs.current[k];
251-
if item.effect.needs.current[k] ~= 0 then
252-
print(creature.name .. " " .. k .. " changed by " .. item.effect.needs.current[k] .. " to " .. creature.needs.current[k]);
253-
end
254-
creature.needs.max[k] = creature.needs.max[k] + item.effect.needs.max[k];
255-
if item.effect.needs.max[k] ~= 0 then
256-
print(creature.name .. " " .. k .. " changed by " .. item.effect.needs.max[k] .. " to " .. creature.needs.max[k]);
257-
end
258-
creature.needs.decay[k] = creature.needs.decay[k] + item.effect.needs.decay[k];
259-
if item.effect.needs.decay[k] ~= 0 then
260-
print(creature.name .. " " .. k .. " changed by " .. item.effect.needs.decay[k] .. " to " .. creature.needs.decay[k]);
261-
end
262-
end
263-
for k,v in pairs(creature.personality) do
264-
creature.personality[k] = creature.personality[k] + item.effect.personality[k];
265-
if item.effect.personality[k] ~= 0 then
266-
print(creature.name .. " " .. k .. " changed by " .. item.effect.personality[k] .. " to " .. creature.personality[k]);
267-
end
268-
end
269-
for k,v in pairs(creature.interests) do
270-
creature.interests[k] = creature.interests[k] + item.effect.interests[k];
271-
if item.effect.interests[k] ~= 0 then
272-
print(creature.name .. " " .. k .. " changed by " .. item.effect.interests[k] .. " to " .. creature.interests[k]);
273-
end
274-
end
275-
for k,v in pairs(creature.skills) do
276-
creature.skills[k] = creature.skills[k] + item.effect.skills[k];
277-
if item.effect.skills[k] ~= 0 then
278-
print(creature.name .. " " .. k .. " changed by " .. item.effect.skills[k] .. " to " .. creature.skills[k]);
279-
end
280-
end
255+
sumEffect(creature, item);
281256
end
282257
end
283258

@@ -360,11 +335,49 @@ local creatureSleep = function(creature, world)
360335
for k,v in pairs(world.map[creature.position["global"].x][creature.position["global"].y].furniture) do
361336
if v.position["local"].x == creature.position["local"].x and v.position["local"].y == creature.position["local"].y then
362337
if v.kind == "confort" then
363-
creature.needs.current.sleep = creature.needs.current.sleep + 10;
338+
sumEffect(creature, v);
339+
print(creature.name .. " is sleeping in a " .. v.name);
340+
return;
364341
end
365342
end
366343
end
367-
creature.needs.current.sleep = creature.needs.current.sleep + 10;
344+
345+
local _fx = Effect();
346+
_fx.needs.current.sleep = 5;
347+
_fx.needs.current.happiness = -8;
348+
_fx.needs.current.social = -4;
349+
_fx.needs.current.sanity = 1;
350+
_fx.needs.current.hygiene = -0.2;
351+
_fx.needs.current.water = -2;
352+
_fx.needs.current.food = -1;
353+
_fx.needs.current.pee = 4;
354+
_fx.needs.current.poo = 1;
355+
_fx.personality.aggressiveness = -0.1;
356+
_fx.personality.ambition = -0.1;
357+
_fx.personality.criativity = 0.5;
358+
_fx.personality.curiosity = 0.01;
359+
_fx.personality.empathy = 0.01;
360+
_fx.personality.funny = 0.5;
361+
_fx.personality.honestity = -0.01;
362+
_fx.personality.humanity = 0.2;
363+
_fx.personality.positivity = 0.1;
364+
_fx.personality.spirituality = 0.3;
365+
_fx.interests.art = 0.1;
366+
_fx.interests.cooking = 0.1;
367+
_fx.interests.dance = 0.1;
368+
_fx.interests.gaming = 0.1;
369+
_fx.interests.music = 0.1;
370+
_fx.interests.reading = 0.1;
371+
_fx.interests.sport = 0.1;
372+
_fx.interests.writing = 0.1;
373+
_fx.skills.think = 0.02;
374+
_fx.skills.hear = -0.01;
375+
_fx.skills.cooking = -0.01;
376+
_fx.skills.crafting = 0.01;
377+
_fx.skills.unarmed = 0.01;
378+
_fx.skills.lockpick = -0.01;
379+
380+
sumEffect(creature, _fx);
368381
end
369382

370383
local creatureDrop = function(creature, world, itemid)
@@ -456,6 +469,7 @@ local creatureRemove = function(creature, world, itemid, containerid)
456469
end
457470
end
458471

472+
459473
local function Creature(name)
460474
local self = {};
461475

types/Effect.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ local Needs = require("types.Needs");
44
local Personality = require("types.Personality");
55
local Interests = require("types.Interests");
66

7-
local function Effect(items)
7+
local function Effect()
88
local self = {};
99
self.skills = Skills(0);
1010
self.needs = Needs(0,0,0);

types/Personality.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ local Personality = function()
1515

1616
self.courage = 0;
1717

18-
self.agressiveness = 0;
18+
self.aggressiveness = 0;
1919
self.ambition = 0;
2020

2121
return self;

types/Skills.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ local function Skills(defaultValue)
44
self.think = defaultValue or 1;
55
self.hear = defaultValue or 1;
66

7+
self.crafting = defaultValue or 1;
78
self.cooking = defaultValue or 1;
89

910
self.unarmed = defaultValue or 1;

0 commit comments

Comments
 (0)