Skip to content

Commit

Permalink
Racconar Omnivore
Browse files Browse the repository at this point in the history
  • Loading branch information
pmotschmann committed Dec 1, 2024
1 parent ba3bf55 commit d0e8d26
Show file tree
Hide file tree
Showing 13 changed files with 187 additions and 112 deletions.
62 changes: 31 additions & 31 deletions evolve/main.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion src/achieve.js
Original file line number Diff line number Diff line change
Expand Up @@ -641,7 +641,7 @@ export function checkAchievements(){
equilProgress[global.pillars[race]]++;
}
});
if (Object.keys(genus).length >= Object.keys(genus_traits).length - 1){
if (Object.keys(genus).length >= Object.keys(genus_traits).length - 2){
let rank = 5;
Object.keys(genus).forEach(function(g){
if (genus[g] < rank && g !== 'hybrid'){
Expand Down
19 changes: 15 additions & 4 deletions src/actions.js
Original file line number Diff line number Diff line change
Expand Up @@ -2732,7 +2732,9 @@ export const actions = {
action(){
if (payCosts($(this)[0])){
incrementStruct('rock_quarry','city');
global.civic.quarry_worker.display = true;
if (!global.race['forager']){
global.civic.quarry_worker.display = true;
}
let stone = BHStorageMulti(spatialReasoning(100));
global['resource']['Stone'].max += stone;
if (global.race['smoldering'] && global.resource.Chrysotile.display){
Expand Down Expand Up @@ -3526,6 +3528,7 @@ export const actions = {
return global.race['wish'] && global.race['wishStats'] && global.city['wonder_lighthouse'] ? true : false;
},
trait: ['wish'],
wiki: false,
queue_complete(){ return false; },
effect(){
return loc(`city_wonder_effect`,[5]);
Expand All @@ -3548,6 +3551,7 @@ export const actions = {
return global.race['wish'] && global.race['wishStats'] && global.city['wonder_pyramid'] ? true : false;
},
trait: ['wish'],
wiki: false,
queue_complete(){ return false; },
effect(){
return loc(`city_wonder_effect`,[5]);
Expand Down Expand Up @@ -5063,7 +5067,7 @@ const raceList = [
'synth','nano',
'ghast','shoggoth',
'dwarf','raccoon','lichen','wyvern','beholder','djinn','narwhal','bombardier','nephilim',
'custom','hybrid'
'custom'//,'hybrid'
];
raceList.forEach(function(race){
if (!['custom','hybrid'].includes(race) || (race === 'custom' && global.custom.hasOwnProperty('race0')) || (race === 'hybrid' && global.custom.hasOwnProperty('race1')) ) {
Expand Down Expand Up @@ -8173,6 +8177,11 @@ function sentience(){
}
});
});
if (typeList.includes('carnivore') && typeList.includes('herbivore')){
setTraitRank('forager',{ set: genus_traits.omnivore.forager });
delete global.race['carnivore'];
delete global.race['herbivore'];
}

Object.keys(races[global.race.species].traits).forEach(function (trait) {
setTraitRank(trait,{ set: races[global.race.species].traits[trait] });
Expand Down Expand Up @@ -8867,7 +8876,9 @@ function aiStart(){
}
global.resource.Lumber.display = true;
global.resource.Plywood.display = true;
global.civic.lumberjack.display = true;
if (!global.race['forager']){
global.civic.lumberjack.display = true;
}
}
if (global.race['smoldering']){
global.resource.Chrysotile.display = true;
Expand All @@ -8882,7 +8893,7 @@ function aiStart(){

global.civic.miner.display = true;
global.civic.coal_miner.display = true;
if (!global.race['sappy']){
if (!global.race['sappy'] && !global.race['forager']){
global.civic.quarry_worker.display = true;
}
global.civic.professor.display = true;
Expand Down
4 changes: 2 additions & 2 deletions src/events.js
Original file line number Diff line number Diff line change
Expand Up @@ -597,7 +597,7 @@ export const events = {
if (dead > global.resource[global.race.species].amount){ dead = global.resource[global.race.species].amount; }
global.resource[global.race.species].amount -= dead;
blubberFill(dead);
return loc('event_chicken',[loc(`event_chicken_eaten${Math.floor(seededRandom(0,10))}`),dead]);
return loc('event_chicken',[loc(`event_chicken_eaten${Math.floor(seededRandom(0,10))}`),dead,loc(`event_chicken_seasoning${Math.floor(seededRandom(0,10))}`)]);
}
},
brawl:{
Expand Down Expand Up @@ -769,7 +769,7 @@ export const events = {
effect(){
global.resource[global.race.species].amount--;
blubberFill(1);
return loc('event_chicken',[loc(`event_chicken_eaten${Math.rand(0,10)}`),1]);
return loc('event_chicken',[loc(`event_chicken_eaten${Math.rand(0,10)}`),1,loc(`event_chicken_seasoning${Math.floor(seededRandom(0,10))}`)]);
}
},
fight:{
Expand Down
34 changes: 27 additions & 7 deletions src/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -3497,6 +3497,7 @@ function fastLoop(){
if (global.race['forager']){
let forage = 1 + (global.tech['foraging'] ? 0.75 * global.tech['foraging'] : 0);
let foragers = workerScale(global.civic.forager.workers,'forager');
foragers *= racialTrait(foragers,'forager');
if (global.race['servants']){
let serve = global.race.servants.jobs.forager;
serve *= servantTrait(global.race.servants.jobs.forager,'forager');
Expand Down Expand Up @@ -4049,7 +4050,7 @@ function fastLoop(){
hunters *= racialTrait(hunters,'hunting');
if (global.race['servants']){
let serve = jobScale(global.race.servants.jobs.hunter);
serve *= servantTrait(global.race.servants.jobs.forager,'hunting');
serve *= servantTrait(global.race.servants.jobs.hunter,'hunting');
hunters += serve;
}
if (global.city.biome === 'oceanic'){
Expand Down Expand Up @@ -4104,6 +4105,7 @@ function fastLoop(){
if (global.race['forager']){
let forage = 1 + (global.tech['foraging'] ? 0.5 * global.tech['foraging'] : 0);
let foragers = workerScale(global.civic.forager.workers,'forager');
foragers *= racialTrait(foragers,'forager');

if (global.race['servants']){
let serve = global.race.servants.jobs.forager;
Expand Down Expand Up @@ -5459,7 +5461,7 @@ function fastLoop(){

breakdown.p['Lumber'][loc('job_reclaimer')] = reclaimers + 'v';
if (reclaimers > 0){
breakdown.p['Lumber'][`ᄂ${loc('city_graveyard')}`] = ((graveyard - 1) * 100) + '%';
breakdown.p['Lumber'][`ᄂ${loc('city_graveyard')}+0`] = ((graveyard - 1) * 100) + '%';
breakdown.p['Lumber'][`ᄂ${loc('quarantine')}+0`] = ((q_multiplier - 1) * 100) + '%';
}
breakdown.p['Lumber'][loc('soldiers')] = soldiers + 'v';
Expand All @@ -5469,6 +5471,7 @@ function fastLoop(){
if (global.race['forager']){
let forage = 1;
let foragers = workerScale(global.civic.forager.workers,'forager');
foragers *= racialTrait(foragers,'forager');

if (global.race['servants']){
let serve = global.race.servants.jobs.forager;
Expand All @@ -5479,9 +5482,10 @@ function fastLoop(){
let forage_base = foragers * forage * 0.25;
breakdown.p['Lumber'][loc('job_forager')] = forage_base + 'v';
if (forage_base > 0){
breakdown.p['Lumber'][`ᄂ${loc('city_graveyard')}+1`] = ((graveyard - 1) * 100) + '%';
breakdown.p['Lumber'][`ᄂ${loc('quarantine')}+2`] = ((q_multiplier - 1) * 100) + '%';
}
modRes('Lumber', forage_base * hunger * global_multiplier * q_multiplier * time_multiplier);
modRes('Lumber', forage_base * hunger * graveyard * global_multiplier * q_multiplier * time_multiplier);
}
breakdown.p['Lumber'][loc('hunger')] = ((hunger - 1) * 100) + '%';
modRes('Lumber', reclaimers * hunger * graveyard * global_multiplier * q_multiplier * time_multiplier);
Expand Down Expand Up @@ -5549,6 +5553,7 @@ function fastLoop(){
if (global.race['forager']){
let forage = 1;
let foragers = workerScale(global.civic.forager.workers,'forager');
foragers *= racialTrait(foragers,'forager');

if (global.race['servants']){
let serve = global.race.servants.jobs.forager;
Expand All @@ -5558,7 +5563,14 @@ function fastLoop(){

let forage_base = foragers * forage * 0.25 * production('psychic_boost','Lumber');
breakdown.p['Lumber'][loc('job_forager')] = forage_base + 'v';
modRes('Lumber', forage_base * hunger * global_multiplier * time_multiplier);
if (lumber_base > 0){
breakdown.p['Lumber'][`ᄂ${loc('city_lumber_yard')}`] = ((lumber_yard - 1) * 100) + '%';
breakdown.p['Lumber'][`ᄂ${loc('city_sawmill')}`] = ((sawmills - 1) * 100) + '%';
breakdown.p['Lumber'][`ᄂ${loc('power')}`] = ((power_mult - 1) * 100) + '%';
breakdown.p['Lumber'][`ᄂ${loc('quarantine')}+0`] = ((q_multiplier - 1) * 100) + '%';
}

modRes('Lumber', forage_base * hunger * q_multiplier * sawmills * lumber_yard * power_mult * global_multiplier * time_multiplier);
}

breakdown.p['Lumber'][loc('hunger')] = ((hunger - 1) * 100) + '%';
Expand Down Expand Up @@ -5710,6 +5722,7 @@ function fastLoop(){
if (global.race['forager'] && global.resource.Stone.display){
let forage = 1;
let foragers = workerScale(global.civic.forager.workers,'forager');
foragers *= racialTrait(foragers,'forager');

if (global.race['servants']){
let serve = global.race.servants.jobs.forager;
Expand All @@ -5720,9 +5733,11 @@ function fastLoop(){
let forage_base = foragers * forage * 0.22 * production('psychic_boost','Stone');
breakdown.p['Stone'][loc('job_forager')] = forage_base + 'v';
if (forage_base > 0){
breakdown.p['Stone'][`ᄂ${loc('city_rock_quarry')}`] = ((rock_quarry - 1) * 100) + '%';
breakdown.p['Stone'][`ᄂ${loc('power')}`] = ((power_mult - 1) * 100) + '%';
breakdown.p['Stone'][`ᄂ${loc('quarantine')}+1`] = ((q_multiplier - 1) * 100) + '%';
}
modRes('Stone', forage_base * hunger * global_multiplier * q_multiplier * time_multiplier);
modRes('Stone', forage_base * hunger * rock_quarry * power_mult * global_multiplier * q_multiplier * time_multiplier);
}

breakdown.p['Stone'][loc('hunger')] = ((hunger - 1) * 100) + '%';
Expand Down Expand Up @@ -6041,6 +6056,7 @@ function fastLoop(){
if (global.race['forager'] && global.tech['dowsing']){
let forage = global.tech.dowsing >= 2 ? 5 : 1;
let foragers = workerScale(global.civic.forager.workers,'forager');
foragers *= racialTrait(foragers,'forager');

if (global.race['servants']){
let serve = global.race.servants.jobs.forager;
Expand Down Expand Up @@ -6163,8 +6179,9 @@ function fastLoop(){
breakdown.p['Iron'][loc('city_shrine')] = ((shrineMetal.mult - 1) * 100).toFixed(1) + '%';

if (global.race['forager'] && global.tech['dowsing']){
let forage = global.tech.dowsing >= 2 ? 5 : 1;
let forage = global.tech.dowsing >= 2 ? 2 : 1;
let foragers = workerScale(global.civic.forager.workers,'forager');
foragers *= racialTrait(foragers,'forager');

if (global.race['servants']){
let serve = global.race.servants.jobs.forager;
Expand All @@ -6183,7 +6200,10 @@ function fastLoop(){
forage_base *= biomes.ashland.vars()[2];
}
breakdown.p['Iron'][loc('job_forager')] = forage_base + 'v';
modRes('Iron', forage_base * hunger * global_multiplier * time_multiplier);
if (forage_base > 0){
breakdown.p['Iron'][`ᄂ${loc('quarantine')}+2`] = ((q_multiplier - 1) * 100) + '%';
}
modRes('Iron', forage_base * hunger * global_multiplier * q_multiplier * time_multiplier);
}

breakdown.p['Iron'][loc('hunger')] = ((hunger - 1) * 100) + '%';
Expand Down
42 changes: 32 additions & 10 deletions src/races.js
Original file line number Diff line number Diff line change
Expand Up @@ -95,9 +95,12 @@ export const genus_traits = {
herbivore: 1,
instinct: 1
},
/*omnivore: {
forager: 1
},*/
omnivore: {
forager: 1,
beast: 1,
cautious: 1,
instinct: 1
},
small: {
small: 1,
weak: 1
Expand Down Expand Up @@ -331,12 +334,31 @@ export const traits = {
}
},
},
/*forager: { // Will eat just about anything
forager: { // Will eat just about anything
name: loc('trait_forager_name'),
desc: loc('trait_forager'),
type: 'genus',
val: 2,
},*/
val: 4,
vars(r){
// []
switch (r || traitRank('forager') || 1){
case 0.1:
return [2,10];
case 0.25:
return [3,15];
case 0.5:
return [5,25];
case 1:
return [10,50];
case 2:
return [15,60];
case 3:
return [20,65];
case 4:
return [25,70];
}
},
},
small: { // Reduces cost creep multipliers by 0.01
name: loc('trait_small_name'),
desc: loc('trait_small'),
Expand Down Expand Up @@ -5489,7 +5511,7 @@ export const races = {
name: loc('race_raccoon'),
desc: loc('race_raccoon_desc'),
type: 'hybrid',
hybrid: ['carnivore','herbivore'],
hybrid: ['carnivore','herbivore'], // ['omnivore'],
home: loc('race_raccoon_home'),
entity: loc('race_raccoon_entity'),
traits: {
Expand Down Expand Up @@ -6045,7 +6067,7 @@ export function racialTrait(workers,type){
if (global.civic.govern.type === 'democracy'){
modifier *= 1 - (govEffect.democracy()[1] / 100);
}
if (global.tech['cyber_worker'] && (type === 'lumberjack' || type === 'miner')){
if (global.tech['cyber_worker'] && (type === 'lumberjack' || type === 'miner' || type === 'forager')){
modifier *= 1.25;
}
if (global.race['ocular_power'] && global.race['ocularPowerConfig'] && global.race.ocularPowerConfig.t
Expand Down Expand Up @@ -6129,7 +6151,7 @@ export function racialTrait(workers,type){
if (global.race['high_pop']){
modifier = highPopAdjust(modifier);
}
if (global.race['gravity_well'] && ['farmer', 'miner', 'lumberjack', 'factory', 'hunting'].includes(type)){
if (global.race['gravity_well'] && ['farmer', 'miner', 'lumberjack', 'factory', 'hunting', 'forager'].includes(type)){
modifier = teamster(modifier);
}
return modifier;
Expand All @@ -6140,7 +6162,7 @@ types: farmer, miner, lumberjack, science, factory, army, hunting, scavenger, fo
*/
export function servantTrait(workers,type){
let modifier = 1;
if (global.race['gravity_well'] && ['farmer', 'miner', 'lumberjack', 'factory', 'hunting', 'scavenger'].includes(type)){
if (global.race['gravity_well'] && ['farmer', 'miner', 'lumberjack', 'factory', 'hunting', 'scavenger', 'forager'].includes(type)){
modifier = teamster(modifier);
}
return modifier;
Expand Down
2 changes: 2 additions & 0 deletions src/space.js
Original file line number Diff line number Diff line change
Expand Up @@ -1412,6 +1412,7 @@ const spaceProjects = {
return global.race['wish'] && global.race['wishStats'] && global.space['wonder_statue'] ? true : false;
},
trait: ['wish'],
wiki: false,
queue_complete(){ return false; },
effect(){
return loc(`city_wonder_effect`,[5]);
Expand Down Expand Up @@ -3265,6 +3266,7 @@ const interstellarProjects = {
return global.race['wish'] && global.race['wishStats'] && global.interstellar['wonder_gardens'] ? true : false;
},
trait: ['wish'],
wiki: false,
queue_complete(){ return false; },
effect(){
return loc(`city_wonder_effect`,[5]);
Expand Down
Loading

0 comments on commit d0e8d26

Please sign in to comment.