1
1
local br = require (" bruter.bruter" )
2
+ local Effect = require (" types.Effect" );
2
3
local Needs = require (" types.Needs" );
3
4
local Skills = require (" types.Skills" );
4
5
local Personality = require (" types.Personality" );
@@ -11,6 +12,45 @@ local Item = require("types.Item");
11
12
12
13
local items = require (" data.items" );
13
14
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
+
14
54
local function creaturePassTurn (creature )
15
55
creature .needs .current .food = creature .needs .current .food + creature .needs .decay .food ;
16
56
creature .needs .current .water = creature .needs .current .water + creature .needs .decay .water ;
@@ -207,77 +247,12 @@ local creatureConsume = function(creature, world, itemid)
207
247
208
248
print (creature .name .. " is consuming 100ml of " .. _item .name .. " from " .. item .name );
209
249
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 );
224
251
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" );
247
253
end
248
254
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 );
281
256
end
282
257
end
283
258
@@ -360,11 +335,49 @@ local creatureSleep = function(creature, world)
360
335
for k ,v in pairs (world .map [creature .position [" global" ].x ][creature .position [" global" ].y ].furniture ) do
361
336
if v .position [" local" ].x == creature .position [" local" ].x and v .position [" local" ].y == creature .position [" local" ].y then
362
337
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 ;
364
341
end
365
342
end
366
343
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 );
368
381
end
369
382
370
383
local creatureDrop = function (creature , world , itemid )
@@ -456,6 +469,7 @@ local creatureRemove = function(creature, world, itemid, containerid)
456
469
end
457
470
end
458
471
472
+
459
473
local function Creature (name )
460
474
local self = {};
461
475
0 commit comments