Karryn's Prison Guide 38

Первый раздел

Описание Это мануал по более гибкой настройке игры. Многие параметры игры можно отредактировать через скрипты. Код в скриптах написан на JavaScript.

Путь к конфигурационным файлам на Windows такой:

— Заходите в папку с игрой и дальше www / js / plugins /

Тут понадобятся следующие файлы:

RemtairyKarryn.js

RemtairyResults.js

RemtairyGifts.js

RemtairyEdicts.js

RemtairyPrison.js

RemtairyKarrynWaitress.js

RemtairyKarrynReceptionist.js

RemtairyKarrynStripper.js

Многие настройки могут откатиться при обновлении игры. Мои значения переменных в скриптах будет отличаться от ваших.

Настройки характеристик Каррун Файл RemtairyKarryn.js Настройка порога Slut Level

Это настройка влияет на порог эффектов от Slut Level, который влияет на разные пассивные эффекты. Этот параметр не изменяет Slut Level персонажа.

const SLUT_LVL_THRESHOLD_STAGE_1 = 50; const SLUT_LVL_THRESHOLD_STAGE_2 = 80; const SLUT_LVL_THRESHOLD_STAGE_3 = 120; const SLUT_LVL_THRESHOLD_STAGE_4 = 150; const SLUT_LVL_THRESHOLD_STAGE_5 = 200;

Акссесуары

Указывает уровень харизмы необходимый для ношения акссесуаров.

const VAR_ACCESSORY_CHARM_REQ_1 = 10; const VAR_ACCESSORY_CHARM_REQ_2 = 15; const VAR_ACCESSORY_CHARM_REQ_3 = 20; const VAR_ACCESSORY_CHARM_REQ_4 = 25; const VAR_ACCESSORY_CHARM_REQ_5 = 30;

Возраст Каррун

Меняет возраст Каррун в статистике.

const VAR_STARTING_AGE = 26;

Файл RemtairyResults.js Управление лимитами уровня Каррун в зависимости от этажа

let limit = 24; if(this.hasEdict(EDICT_LEVEL_FOUR_SUBJUGATED)) limit += 120; else if(this.hasEdict(EDICT_LEVEL_THREE_SUBJUGATED)) limit += 80; else if(this.hasEdict(EDICT_LEVEL_TWO_SUBJUGATED)) limit += 50; else if(this.hasEdict(EDICT_LEVEL_ONE_SUBJUGATED)) limit += 24;

Файл RemtairyGifts.js Повышение уровня шарма от подарков

Увеличение шарма после подарка за убийство боссов.

let giftsBonus = 10;

Предположительно повышает шарм от подарка за победу над боссом.

if(this.hasGift(GIFT_ID_EMPEROR_LV1_CHARM)) giftsBonus += 20; if(this.hasGift(GIFT_ID_EMPEROR_LV2_CHARM)) giftsBonus += 18; if(this.hasGift(GIFT_ID_EMPEROR_LV3_CHARM)) giftsBonus += 14; if(this.hasGift(GIFT_ID_EMPEROR_LV4_CHARM)) giftsBonus += 10;

Настройки параметров тюрьмы Файл RemtairyPrison.js Количество дней до анархии

Количество дней до анархии на этаже (Анархия приводит к завершению игры). С каждым этажом это число умножается на коэффициент и количество дней увеличивается.

const PRISON_ANARCHY_GRACE_PERIOD_HARD = 20;

Настройка стартовых параметров

Настройка дохода тюрьмы на первом этаже, расходов, уровня порядка, уровня коррупции Каррун на первый день и стартового капитала.

const PRISON_STARTING_INCOME = 870; const PRISON_STARTING_EXPENSE = 10; const PRISON_STARTING_ORDER_PER_DAY = 3; const PRISON_STARTING_ORDER = 60; const PRISON_STARTING_CORRUPTION = 1; const PRISON_STARTING_FUNDING = 10000;

Штраф нердов

На втором этаже добавляется новый тип расходов, штраф от нердов. Сумма штрафа зависит от уровня коррупции Каррун.

blackmailAmt += Prison.corruption * 5; if(Karryn.hasEdict(EDICT_INMATE_ASSISTANT_ACCOUNTANT)) blackmailAmt += Prison.corruption * 2;

Коэффициент субсидий

Стартовые субсидии.

let subsidies = 2000;

Коэффициент субсидий в зависимости от уровня порядка. Чем выше порядок тем ниже доход от субсидий.

if(order <= 20) subsidies *= 1; else if(order <= 27) subsidies *= 0.9; else if(order <= 35) subsidies *= 0.8; else if(order <= 50) subsidies *= 0.7; else if(order <= 65) subsidies *= 0.6; else if(order <= 80) subsidies *= 0.5; else if(order <= 90) subsidies *= 0.48; else subsidies *= 0.25;

Множитель опыта

Коэффициент умножения опыта после победы над врагами. Для каждого уровня сложности игры своя переменная. Текущая переменная умножает опыт только в режиме Prisoner Mode. Рядом будут переменные и для Secretary Mode, и для Warden Mode.

const DIFFICULTY_HARD_GROWTH_RATE = 2;

Увеличение Edict Point получаемых в день

Этот параметр отвечает за количество Edict Point получаемых в каждый новый день. Текущая переменная для режима Prisoner Mode. Рядом будут переменные и для Secretary Mode, и для Warden Mode.

Game_Party.prototype.setDifficultyToHard = function() { $gameActors.actor(ACTOR_KARRYN_ID)._storedEdictPoints = 2;

Стоимость улучшений Форта

if(this.hasEdict(EDICT_REPAIR_RESEARCH)) rate *= 0.95; if(this.hasEdict(EDICT_PARTIALLY_RESTORE_BUREAUCRACY)) rate *= 1.1; rate *= this.titlesEdictCostRate(skillId); if(this.isEquippingThisAccessory(NECKLACE_JADE_ID)) rate *= 1.2;

Цены на аксессуары

Game_Actor.prototype.getResearchEdictGoldRate = function() { let rate = 1; if(this.hasEdict(EDICT_APPLY_FOR_RESEARCH_GRANTS)) { rate *= 0.9;} Game_Actor.prototype.getAccessoryEdictGoldRate = function() { let rate = 1; if(this.hasEdict(EDICT_RESEARCH_ACCESSORY_DEAL)) { rate *= 0.85;}

Цены за тренировки навыков Каррун

Game_Actor.prototype.getStatTrainingEdictGoldRate = function() { let rate = 1; if(this.hasEdict(EDICT_RESEARCH_EXPERT_TRAINING_TECH)) { rate *= 0.4;} else if(this.hasEdict(EDICT_RESEARCH_ADVANCED_TRAINING_TECH)) { rate *= 0.7;}

Второй раздел

Файл RemtairyEdicts.js Параметры прочности одежды

Увеличивают количество HP у одежды, после того, как вы купите соответствующее улучшение в навыках.

if(this.hasEdict(EDICT_WARDEN_CLOTH_UPGRADE_FOUR)) bonus += 805; else if(this.hasEdict(EDICT_WARDEN_CLOTH_UPGRADE_THREE)) bonus += 550; else if(this.hasEdict(EDICT_WARDEN_CLOTH_UPGRADE_TWO)) bonus += 330; else if(this.hasEdict(EDICT_WARDEN_CLOTH_UPGRADE_ONE)) bonus += 150;

Безоружная атака и защита

Эти параметры увеличивают защиту и урон при безоружной атаке Каррун.

if(this.hasEdict(EDICT_UNARMED_ATTACK_TRAINING_III)) unarmedAttack += 1.25; else if(this.hasEdict(EDICT_UNARMED_ATTACK_TRAINING_II)) unarmedAttack += 1; else if(this.hasEdict(EDICT_UNARMED_ATTACK_TRAINING_I)) unarmedAttack += 0.75; else if(this.hasEdict(EDICT_UNARMED_COMBAT_TRAINING)) unarmedAttack += 0.5; if(this.hasEdict(EDICT_UNARMED_DEFENSE_TRAINING_III)) unarmedDefense += 1.25; else if(this.hasEdict(EDICT_UNARMED_DEFENSE_TRAINING_II)) unarmedDefense += 1; else if(this.hasEdict(EDICT_UNARMED_DEFENSE_TRAINING_I)) unarmedDefense += 0.75; else if(this.hasEdict(EDICT_UNARMED_COMBAT_TRAINING)) unarmedDefense += 0.5;

Увеличение показателей Стамины и Энергии Каррун

Коэффициенты на умножение навыков увеличивающих количество Стамины и Энергии

if(paramId === PARAM_MAXSTAMINA_ID && this.hasEdict(EDICT_STAMINA_TRAINING_TWO)) rate *= 1.1; if(paramId === PARAM_MAXSTAMINA_ID && this.hasEdict(EDICT_SPEC_STAMINA_TANK)) rate *= 1.25; if(paramId === PARAM_MAXENERGY_ID && this.hasEdict(EDICT_SPEC_ENERGY_TANK)) rate *= 1.1; if(id === XPARAM_STA_REGEN_ID) { if(this.hasEdict(EDICT_STAMINA_TRAINING_THREE)) value += 0.05; else if(this.hasEdict(EDICT_STAMINA_TRAINING_ONE)) value += 0.02; if(this.hasEdict(EDICT_RESEARCH_SLIME_STUDY) && Karryn.isInCombatPose()) value += 0.03;}

Доход от покупки апгрейда шефа

Параметр увеличивает доход после того как купите улучшение в Форте связанное с Шефом.

if(Karryn.hasEdict(EDICT_PAY_FOR_BETTER_FOOD)) chefIncome += 600; if(Karryn.hasEdict(EDICT_GUARD_PAY_FOR_FOOD)) chefIncome += 400;

Размеры рсходов тюрьмы

Параметр регулирующий расходы тюрьмы (Expense).

if(this.hasEdict(EDICT_HIRE_ACCOUNTANT)) { let accountantRate = 0.1; if(this.hasEdict(EDICT_INMATE_ASSISTANT_ACCOUNTANT)) accountantRate += 0.05; rate *= 1 - (accountantRate * this.edictSkilledStaffMultipler());} if(this.hasEdict(EDICT_RESEARCH_WEIRD_TAX_LEGALITIES)) rate *= 0.9; else if(this.hasEdict(EDICT_RESEARCH_OBSOLETE_TAX_CODE)) rate *= 0.95; if(this.hasEdict(EDICT_RESEARCH_PRISON_AUDIT)) rate *= 0.95;

Шанс нападения на базе

Параметр отвечает за вероятность нападения в комнате во время м**турбации. Как я понял значение 20 обозначает 20%.

Game_Actor.prototype.getInvasionChance_LevelOne = function() { let chance = 20; Game_Actor.prototype.getInvasionChance_LevelTwo = function() { let chance = 30; Game_Actor.prototype.getInvasionChance_LevelThree = function() { let chance = 55; Game_Actor.prototype.getInvasionChance_LevelFour = function() { let chance = 75; Game_Actor.prototype.getInvasionChance_LevelFive = function() { let chance = 50;

Увеличение количиства Income

Параметр повышает количество Income получаемый каждый день.

Game_Actor.prototype.variablePrisonIncome = function() { let income = 500;

(Guard Equipment) Характеристики охранников

Параметр отвечает за живучесть и урон охранников напавших на Каррун.

if(Karryn.hasEdict(EDICT_MILITARY_GUARD_EQUIPMENT)) { if(paramId === SPARAM_WPATK_ID) value += 0.45; if(paramId === SPARAM_WPDEF_ID) value += 0.5; } else if(Karryn.hasEdict(EDICT_REINFORCED_GUARD_EQUIPMENT)) { if(paramId === SPARAM_WPATK_ID) value += 0.35; if(paramId === SPARAM_WPDEF_ID) value += 0.4; } else if(Karryn.hasEdict(EDICT_STANDARD_GUARD_EQUIPMENT)) { if(paramId === SPARAM_WPATK_ID) value += 0.25; if(paramId === SPARAM_WPDEF_ID) value += 0.3;

Коэффициент риска восстания

Увеличивает шанс возниковения восстания на этажах (riot).

const PRISON_LEVEL_ONE_ENEMY_LEVEL_RIOT_CHANGE = 1.1; const PRISON_LEVEL_TWO_ENEMY_LEVEL_RIOT_CHANGE = 1.7; const PRISON_LEVEL_THREE_ENEMY_LEVEL_RIOT_CHANGE = 1.3; const PRISON_LEVEL_FOUR_ENEMY_LEVEL_RIOT_CHANGE = 1.2; const PRISON_LEVEL_FIVE_ENEMY_LEVEL_RIOT_CHANGE = 1.5;

Параметр начисления Edict Point

Параметр отвечает за получение Edict Point в зависимости от чётного или не чётного дня. Переменная points = 3 указывает количиство очков получаемых каждый день.

let points = 3; if(Prison.easyMode()) points++; else if(Prison.hardMode() && Prison.date % 2 === 0) points--; if(this.hasEdict(EDICT_PARTIALLY_RESTORE_BUREAUCRACY)) { if(this.hasEdict(EDICT_REDIRECT_SUBSIDIES)) { if(Prison.date % 2 === 1) points++;} else points++;}

Третий раздел

Прибыль магазина

Стартовый доход магазина после его открытия.

Game_Party.prototype.getStoreIncome = function() { if(!Karryn.hasEdict(EDICT_REPAIR_STORE)) return 0; let storeIncome = 250;

Увеличение дохода магазина после покупки апгрейдов.

if(Karryn.hasEdict(EDICT_RESEARCH_DRUG_CONTRACT)) storeIncome += 120; if(Karryn.hasEdict(EDICT_RESEARCH_APHRODISIAC_CONTRACT)) storeIncome += 130; if(Karryn.hasEdict(EDICT_RESEARCH_LAUNDRY_PRODUCT_CONTRACT)) storeIncome += 140; if(Karryn.hasEdict(EDICT_RESEARCH_WEAPON_AND_TOOL_CONTRACT)) storeIncome += 150;

Размер получаемых субсидии по этажам

if(this.hasEdict(EDICT_LEVEL_FOUR_SUBJUGATED)) value += 1400; else if(this.hasEdict(EDICT_LEVEL_THREE_SUBJUGATED)) value += 1200; else if(this.hasEdict(EDICT_LEVEL_TWO_SUBJUGATED)) value += 800; else if(this.hasEdict(EDICT_LEVEL_ONE_SUBJUGATED)) value += 400;

Управление контроля (Control)

Параметр отвечает за количиство очков контроля, чем их больше тем меньше падает уровень порядка каждый день.

Game_Actor.prototype.variablePrisonControl = function() { let control = 8;

Очки контроля получаемые при покупке апгрейдов в Форте.

if(Karryn.hasEdict(EDICT_REPAIR_DISHWASHING)) { if(Karryn.hasEdict(EDICT_HIRE_DISHWASHERS)) control += 4; } if(Karryn.hasEdict(EDICT_HIRE_A_CHEF)) { let chefControl = 4; if(Karryn.hasEdict(EDICT_EXPAND_INMATE_MENU)) chefControl += 4; if(Karryn.hasEdict(EDICT_GOURMET_GUARD_MEALS)) chefControl += 4;

Рост расходов (Expense) после покупок апгрейдов

Параметы отвечающие за размер расходов при покупке разных апгрейдов.

Game_Actor.prototype.edictsPrisonFlatExpense = function() { let expense = 0; if(this.hasEdict(EDICT_LOUNGE_ISNT_FREE_ANYMORE) && this.hasEdict(EDICT_REPAIR_STAFF_LOUNGE)) { expense -= 20;} if(Karryn.hasEdict(EDICT_REPAIR_DISHWASHING)) { if(Karryn.hasEdict(EDICT_HIRE_DISHWASHERS) && !Karryn.hasEdict(EDICT_USE_INMATE_DISHWASHERS)) expense += 55;} if(Karryn.hasEdict(EDICT_REPAIR_CLASSROOM)) { if(Karryn.hasEdict(EDICT_WORKSHOP_CLASSES)) { if(Karryn.hasEdict(EDICT_MANDATORY_CLASSES)) expense += 50; else expense += 10;} else if(Karryn.hasEdict(EDICT_ANATOMY_CLASSES) || Karryn.hasEdict(EDICT_REFORM_CLASSES)) { if(Karryn.hasEdict(EDICT_MANDATORY_CLASSES)) expense += 100; else expense += 75;} } if(Karryn.hasEdict(EDICT_RIOT_SUPPRESSING_TRAINING_FOR_GUARDS)) { if(Prison.prisonLevelOneIsSubjugated()) expense += 50; if(Prison.prisonLevelTwoIsSubjugated()) expense += 50; if(Prison.prisonLevelThreeIsSubjugated()) expense += 50; if(Prison.prisonLevelFourIsSubjugated()) expense += 50;}

Прибыль с Мастерской (Workshop)

Параметр стартовой прибыли.

if(Karryn.hasEdict(EDICT_REPAIR_WORKSHOP)) { let workshopIncomeRate = 1; let workshopIncome = 500;

Прибыль после покупки соответствующих апгрейдов.

if(Karryn.hasEdict(EDICT_WORKSHOP_CLASSES)) { if(Karryn.hasEdict(EDICT_MANDATORY_CLASSES)) workshopIncomeRate += 1; else workshopIncomeRate += 0.5; } if(Karryn.hasEdict(EDICT_RESEARCH_PRISON_LABOR_LAWS)) workshopIncomeRate += 0.25; if(Karryn.hasEdict(EDICT_HARDER_WORKSHOP_PROJECTS)) workshopIncome += 475; else if(Karryn.hasEdict(EDICT_LONGER_WORKSHOP_SHIFTS)) workshopIncome += 375; if(Karryn.hasEdict(EDICT_ACCESSIBILITY_FOR_ORCS)) workshopIncomeRate *= 0.6; Прибыль после изучения if(Karryn.hasEdict(EDICT_PAY_FOR_BETTER_FOOD)) chefIncome += 1000; if(Karryn.hasEdict(EDICT_GUARD_PAY_FOR_FOOD)) chefIncome += 700;

Четвёртый раздел

Параметры работы Каррун Файл RemtairyKarrynWaitress.js

Параметры Бара

Количество дней до снижении репутации бара. При текущем значении, если Каррун не работает в баре 40 дней, то репутация упадёт на -1 от общего количества репутации.

const WAITRESS_REP_DECAY_DAYS = 40;

Цены за алкоголь.

const ALCOHOL_TYPE_WATER = 10; const ALCOHOL_TYPE_PALE_ALE = 20; const ALCOHOL_TYPE_DARK_ALE = 25; const ALCOHOL_TYPE_VODKA = 33; const ALCOHOL_TYPE_TEQUILA = 40; const ALCOHOL_TYPE_GOLD_RUM = 45; const ALCOHOL_TYPE_OVERPROOF_RUM = 53; const ALCOHOL_TYPE_WHISKEY = 60; const ALCOHOL_TYPE_SEMEN = 200;

Стартовая прибыль бара после покупки.

let barIncome = 200; if(Karryn.hasEdict(EDICT_REPAIR_BAR)) barIncome += 250; else return 0;

Увеличение прибыли бара после покупки апгрейдов.

if(Karryn.hasEdict(EDICT_BAR_DRINK_MENU_III)) barIncome += 450; else if(Karryn.hasEdict(EDICT_BAR_DRINK_MENU_II)) barIncome += 250; else if(Karryn.hasEdict(EDICT_BAR_DRINK_MENU_I)) barIncome += 100; if(Karryn.hasEdict(EDICT_DONT_PAY_WAITERS)) barIncome -= 50; else if(Karryn.hasEdict(EDICT_USE_INMATE_WAITERS)) barIncome -= 30; if(Karryn.hasEdict(EDICT_SHARE_ALCOHOL_WITH_CLUB)) barIncome -= 100;

Множитель чаевых для Каррун во время работы в баре

Коэффициент чаевых за харасмент Каррун. Тут чаевые за поцелуи.

let tipValue = this.kissLvl() + target.kissLvl(); if(kissLvl == KISS_LVL_TWO) tipValue *= 3; if(drankAlcohol) tipValue *= 1.2;

Ещё один коэффициент чаевых за харасмент Каррун.

tipValue = Math.randomInt(tipValue) + tipValue / 3 + 3; tipValue *= this.waitressSexualTipMultipler();

Ещё один коэффициент чаевых за харасмент Каррун. Эти параметры влияют на размер чаевых сильнее всего.

Game_Actor.prototype.waitressSexualTipMultipler = function() { let rate = 3.5; let reactionScore = this.getReactionScore(); if(reactionScore >= VAR_DEF_RS_LV3_REQ) { rate = 2.5; } else if(reactionScore >= VAR_DEF_RS_LV2_REQ) { rate = 2; } else if(reactionScore >= VAR_DEF_RS_LV1_REQ) { rate = 1.5; }

Коэффициент чаевых после нападения на Каррун в баре.

switch(area) { case CUM_SWALLOW_MOUTH: case CUM_CREAMPIE_♥♥♥♥♥: case CUM_CREAMPIE_ANAL: tipValue *= 3; $gameParty.increaseWaitressCustomerSatisfaction(2); break; case CUM_INTO_MUG: tipValue *= 1.5; break; case CUM_ONTO_FLOOR: tipValue *= 1; break; default: tipValue *= 0.9; $gameParty.increaseWaitressCustomerSatisfaction(1);}

Посетители бара

В зависимости от уровня репутации бара в него будут приходить разные виды посетителей. Тут можно отредактировать этот порог репутации что бы разнообразить посетителей.

if(barRep >= 3) { validEnemyTypes.push(95); validEnemyTypes.push(55);} if(rep >= 30) startingNum = 5 + Math.randomInt(4); else if(rep >= 20) startingNum = 5 + Math.randomInt(3); else if(rep >= 10) startingNum = 4 + Math.randomInt(3); else if(rep >= 7) startingNum = 4 + Math.randomInt(2); else if(rep >= 4) startingNum = 4; else if(rep >= 1) startingNum = 3;

Файл RemtairyKarrynReceptionist.js Работа на ресепшн

Количество дней до снижения репутации.

const RECEPTIONIST_REP_DECAY_DAYS = 40;

Чаевые за харасмент на ресепшн. По умолчанию их значение tipValue = 0.

Game_Party.prototype.addReceptionistHandshakeTips = function() { let actor = $gameActors.actor(ACTOR_KARRYN_ID); let tipValue = 200; let fameValue = 100; if(this._receptionistFame >= 10) { fameValue += 30; fameValue += this._receptionistFame; } else { fameValue += this._receptionistFame * 4; } if(Karryn.isUsingThisTitle(TITLE_ID_RECEPTIONIST_HANDSHAKE)) { tipValue = Math.randomInt(20 + fameValue) + 10; }

Файл RemtairyKarrynStripper.js Работа в стриптиз клубе

Количество дней до снижения репутации.

const STRIP_CLUB_REP_DECAY_DAYS = 40;

Диапазоны репутации клуба. Вроде влияет на размер чаевых.

let rep = $gameParty._stripClubReputation; if(rep >= 12) choice = 4; else if(rep >= 8) choice = 3; else if(rep >= 5) choice = 2; else if(rep >= 3) choice = 1;

Параметры порога агрессии охранников и разнообразия посетителей в зависимости от репутации клуба. Уровень агрессии охранников повышается после определённых апгрейдов. (Если не прокачивать ветку с апгрейдами охранников в разделе Форта, то охранники у входа в спальню Каррун не будут нападать ночью, когда она раздета).

if(guardAggr >= 20) else if(guardAggr >= 12) else if(clubRep >= 14) //Homeless if(clubRep >= 4 && Karryn.hasPassive(PASSIVE_SEXUAL_PARTNERS_HOMELESS_TWO_ID)) { //Goblin if(clubRep >= 6) //Rogue if(clubRep >= 8) //Nerd if(clubRep >= 10)

Параметры отвечающие за размер чаевых в стриптиз клубе.

Game_Party.prototype.stripClub_getCutOfCondomTip = function() { let gold = 80; if(Karryn.hasEdict(EDICT_TAX_CLUB_CONDOM_IMPORTS)) gold += 50; let rate = 1; if(Karryn.isUsingThisTitle(TITLE_ID_FULLCONDOM_ALCHEMIST)) rate += 0.5; else if(Karryn.hasThisTitle(TITLE_ID_FULLCONDOM_ALCHEMIST)) rate += 0.15; $gameParty.increaseExtraGoldReward(Math.round(gold * rate));}; Game_Party.prototype.stripClub_getCutOfVIPPrice = function() { let gold = 80; if(Karryn.hasPassive(PASSIVE_STRIPPER_PATRON_SEX_COUNT_THREE_ID)) gold += 70; else if(Karryn.hasPassive(PASSIVE_STRIPPER_PATRON_SEX_COUNT_TWO_ID)) gold += 50;

Код отвечающий за работу в туалете я не нашёл, он где-то спрятан.

Source: https://steamcommunity.com/sharedfiles/filedetails/?id=2809553748					

More Karryn's Prison guilds