Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Ror2Meeeee
Multiplicador de pickup, dificuldade com progressao entre runs, artefatos (Dizimo, Taxade, Ressurreicao) e itens proprios, incluindo tema Helluva Boss. Todos precisam do mod.
By SawCunhaOS
| Date uploaded | 13 hours ago |
| Version | 0.10.1 |
| Download link | SawCunhaOS-Ror2Meeeee-0.10.1.zip |
| Downloads | 7 |
| Dependency string | SawCunhaOS-Ror2Meeeee-0.10.1 |
This mod requires the following mods to function
bbepis-BepInExPack
Unified BepInEx all-in-one modding pack - plugin framework, detour library
Preferred version: 5.4.2122RiskofThunder-RoR2BepInExPack
Simplify the modding ecosystem of Risk of Rain 2, making it easier for modders to create and maintain their mods while preventing harmful bugs.
Preferred version: 1.45.0RiskofThunder-R2API_Language
API for modifying the language localisation of the game
Preferred version: 1.1.0RiskofThunder-R2API_Networking
Networking API around the Unity UNet Low Level API (LLAPI)
Preferred version: 1.0.4README
Ror2Meeeee
Mod experimental para Risk of Rain 2 (1.5.0). Todos os jogadores precisam do mesmo mod e da mesma versão.
A lógica de gameplay roda só no host: as opções valem a partir do .cfg de quem hospeda.
O que faz
- Multiplicador de pickup (
[Multiplier]): cada item elegível coletado rende N cópias. - Artefato do Comunismo (sem opção de config, só o artefato): com ele ativo no lobby, todo item pego também vai para os outros jogadores vivos. Todos os tipos, de todas as expansões (inclusive sucata, temporários e alugados); equipamentos e itens únicos do mod, não.
- Cálculo limitado (
[LimitedCalc]): limita Bustling Fungus, Bundle of Fireworks e Ghor's Tome (Mode = ClampouAggregate). - Dificuldade (
[Difficulty]): fator único, bônus fixo de vida e dano dos inimigos, mais inimigos e escalada mais rápida. - Progressão entre runs (
[Progression], novo): no fim de cada run o mod dá uma nota ao grupo (velocidade, mortes, dano sofrido, abates), mostra o resumo no chat e ajusta o orçamento de spawn do diretor para a próxima run. Vitória com nota boa sobe um nível; derrota desce um. O cálculo roda fora da thread principal. - Artefato do Dízimo (
[Gold]): todo ouro ganho também vira crédito de spawn do diretor, e o diretor agradece no chat o crédito acumulado (ThankIntervalSeconds, padrão 60 s; 0 desliga). Teto de crédito por segundo (MaxCreditPerSecond, 150) e trava com muitos monstros vivos (MaxMonsters, 80); 0 desliga cada um. - Artefato Taxade (
[Tax]): toda compra paga com ouro (baú, santuário, drone...) custa vida (30% da vida máxima por padrão). Compras com outras moedas (moedas lunares, itens) não são taxadas. - Item "Chamado da Horda" (branco): cada stack aumenta o orçamento de spawn de inimigos.
- Itens "Capitalismo" (novo; branco, verde e vermelho): reduzem a taxa do Taxade (20% / 30% / 50%) e aumentam todo ouro ganho (+10% / +20% / +30%). No máximo 1 de cada por jogador; não duplicam e não saem mais em baús de quem já tem.
- Item "zzz cervo <3" (novo; void verde): A pressa é inimiga da perfeição. Toda velocidade de movimento
extra vira dano (1:1; +50% de conversão por cópia extra). Console:
give_item Ror2MeeeeeCervo 1. - Item "Cano Extra" (novo; vermelho): cada cópia faz a arma principal disparar +1 tiro em leque (balas,
projéteis e flechas; corpo a corpo não). Até 5 extras (
[CanoExtra] MaxExtraShots). Não é multiplicado. Console:give_item Ror2MeeeeeCanoExtra 1. - Grimório do Stolas (novo; equipamento lunar): teleporta para perto do primeiro aliado vivo (sozinho: para o teleportador do estágio); cada uso dá crédito ao
diretor (onda de inimigos). Console:
give_equipment Ror2MeeeeeStolasGrimoire. - Contrato da I.M.P. (novo; vermelho): o primeiro elite ou chefe do estágio vira alvo marcado; matá-lo paga ouro extra
(+100% por cópia) e solta um item verde. Console:
give_item Ror2MeeeeeImpContract 1. - Fungo Egoísta (novo; verde, 5 de vida/s) e Fungo Egoísta do Vazio (void, 15/s; % da vida por cópia extra; corrompe o primeiro): curam sempre,
só você e seus drones/torretas/ajudantes. Console:
give_item Ror2MeeeeeSelfishFungus 1/give_item Ror2MeeeeeSelfishFungusVoid 1. - Égide Vampírica (novo; verde) e Égide do Devorador (void): 5% de chance de bloquear; ao bloquear, roubam vida do
agressor (verde) ou de todos os inimigos próximos (void). Console:
give_item Ror2MeeeeeVampiricAegis 1. - Coração Pesado (novo; lunar): cada cópia multiplica a vida máxima por 1,5 e o dano recebido por 1,3.
Console:
give_item Ror2MeeeeeHeavyHeart 1. - Artefato do Vazio (novo): +5 baús do Vazio por estágio, sorteando entre todos os itens do Vazio; inimigos com +50% de vida.
- Bateria do Portal (novo; verde): o teleportador carrega +10% mais rápido por cópia do time.
Console:
give_item Ror2MeeeeePortalBattery 1. - Bastião (novo; vermelho): escudo de 40% da vida máxima por cópia, recarga 2 s depois do último golpe.
Console:
give_item Ror2MeeeeeBastion 1. - Pilha de Pregos Enferrujados (novo; branco) e Pilha de Espinhos do Vazio (void; corrompe a primeira): chance por
golpe de disparar um prego com sangramento (branco) ou um espinho que marca o alvo e, 3 s depois, detona e espalha
espinhos que marcam os inimigos próximos (void). Console:
give_item Ror2MeeeeeRustyNailStack 1/give_item Ror2MeeeeeVoidSpikeStack 1. - Tela de status (novo; tecla F8): seus atributos atuais e, de todos os jogadores, o total da run de dano causado, cura e dano recebido. Precisa do R2API Networking.
- Artefato da Ressurreição (novo): quem morre deixa uma lápide; um aliado perto dela por 3 s revive o jogador com metade
da vida, pagando metade da própria vida. Só faz sentido em multiplayer. A lápide aparece na tela (marcador e banner);
ror2meeeee_demomostra como fica. - Soltar itens (
[Drop], novo):ror2meeeee_drop [nome] [quantidade]ou o menu na tela (F7, configurável emDrop.MenuKey) solta itens do seu inventário no chão: clique no ícone do item, ajuste a quantidade e clique em SOLTAR (ou setas, +/- e Enter).ror2meeeee_drop_menu [nome]abre a tela com o item já escolhido;ror2meeeee_dropsem argumentos lista o que dá para soltar. - Elites novos (
[Elites], novo): Volátil, Frenético e Fortalecedor (T1), Arruinado e Eco (T2, a partir do loop). Volátil: golpes explodem e mísseis a cada 1-5 s. Frenético: mais velocidade e teleporte até o alvo. Fortalecedor: Warbanner de 25 m para os aliados. Arruinado: dois afixos T1 aleatórios. Eco: 2 ecos com 10% da vida. Uma chave por elite. - Bazar Maior (
[Bazaar], novo): o Bazar entre Tempos ganha até 6 baús com o item à mostra, comprados com o ouro que sobrou do estágio (ou moedas lunares,PayWithLunarCoins), e um casulo que troca moeda lunar por ouro. Limite de trocas por jogador (MaxExchangesPerPlayer) e peso/preço/estoque por tier. O item comprado cai no chão. - Diagnóstico (sempre ligado):
[Identidade]/[Config],[Estágio],[Vigia]e erros novos do jogo noLogOutput.log;ror2meeeee_statusresume tudo. O Probe (opcional) acrescenta alertas de degradação e monstros por fase. - Partículas (
[Particles]): teto por segundo para todo tipo de efeito visual (padrão 10/s por tipo; explosões com teto próprio de 60/s, listaRaised; exceções na listaExempt, por padrão golpes do Mercenary), no que é mostrado e no que é enviado aos outros jogadores. - Gasto por jogador (
[Spend]) e Probe ([General] ProbeEnabled): medição; gravam CSV emBepInEx/.
Configuração
Os padrões já vêm prontos para jogar: quase tudo ligado (multiplicador x10 com lunares e void, compartilhamento,
dificuldade com +75% de vida e +50% de dano, Dízimo, Taxade, progressão, itens). Só o Probe (medição) vem desligado.
Ajuste no BepInEx/config/com.sawcunha.ror2meeeee.cfg (só o host precisa) ou na tela de mods (Risk of Options, opcional).
Cada seção tem um Enabled que explica o que ela faz.
Enabled vale na hora (entre partidas); os outros valores podem ser relidos com ror2meeeee_reload.
Comandos de console (F2)
ror2meeeee_status: features, falhas e hooks.ror2meeeee_reload: relê o.cfg.ror2meeeee_progress/ror2meeeee_progress_reset: nível da progressão entre runs / zerar.ror2meeeee_spend,ror2meeeee_effects [top]: gasto por jogador / efeitos mais frequentes.ror2meeeee_probe_label <nome>,ror2meeeee_probe_begin <nome>,ror2meeeee_probe_end: medição.
Observações
- Itens iniciais, conversões (void) e itens de monstros não são multiplicados.
- Run abandonada no meio não conta para a progressão. O nível fica em
BepInEx/config/ror2meeeee-progress.txte o histórico emBepInEx/ror2meeeee-runs.csv. - Se algo der errado, o
LogOutput.logtem linhas[Multiplier],[Difficulty],[Progression],[Tax],[Probe].
CHANGELOG
Changelog
0.10.4
- Desempenho: mísseis (
MissileProjectile: ATG, Disposable Missile Launcher, aspecto Volátil...) entram na lista padrão do[ProjectileBudget](15 por segundo, dano dos que não saem somado ao próximo). Numa run de 4 jogadores, o Bazar, sem nenhum inimigo, tinha 675 mísseis a cada 30 s. Em uma config existente, acrescenteMissileProjectileaPrefabsà mão. - Desempenho: teto global de projéteis de jogadores (
[ProjectileBudget] GlobalMaxPerSecond) de 80 para 40 por segundo. Na mesma run, mesmo com os tetos por tipo, a soma passava de 50/s com 1 a 3 monstros vivos e o frame médio chegava a 34 ms (p95 54 ms). O dano dos projéteis que não saem é somado aos seguintes do mesmo tipo. Em uma config existente, mudeGlobalMaxPerSecondà mão. - Diagnóstico: o
NullReferenceExceptiondoInventorySafekeepControllerao fim da run (o jogo tenta devolver os inventários guardados de cada jogador depois que a run já foi desmontada; não há perda de itens numa run em andamento) passa a ser contado como ruído conhecido, assim como o doSetStateOnHurt.GetModifiedDuration(inimigo atingido no mesmo frame em que nasce, antes de o jogo preencher os controladores de atordoamento; corrigir exigiria um hook em todo golpe, caro demais para um caso raro) e o doParticleSystemColorFromEffectData(efeito do jogo criado sem passar peloEffectManager; a partícula só não recebe a cor) e oUnable to SpawnEffect from prefab named 'GenericHugeFootstepDust'(efeito de pisada do jogo que não está no catálogo de efeitos; só esse nome) e oBaseAchievement: localUser is null!(conquista verificada sem usuário local num desbloqueio em multiplayer) e o doMasterSuicideOnTimer.OnDestroy(ajudante temporário destruído antes de o jogo terminar de montá-lo) e o doBrotherUltUtils.EvaluatePattern(fase 2 do Mithrix: o ataque mira quem matou o inimigo, e uma torreta ou drone sem direção estoura o cálculo; o ataque só não sai) e o da conquista do Captain na zona de choque (CaptainSupplyDropFinaleAchievement), que também aparece comoFailed at InvokeHandler, probably malformed packet!. - README: seção de créditos com quem desenvolve e testa o mod (SawCunha, Sleeping_tv_, Póker.the.wolf e Artie_saito) e link do projeto no GitHub (topo da página e créditos).
0.10.3
- Desempenho: Fireworks (
FireworkProjectile) entra na lista padrão do[ProjectileBudget]: no máximo 15 por segundo, somando todos os jogadores, com o dano dos que não saem somado ao próximo (mesmo dano total). Numa run de 4 jogadores chegaram a 902 mísseis a cada 30 s antes de o jogo travar; o[LimitedCalc]limita cada lançador, mas com o Multiplicador são muitos lançadores. Em uma config existente, acrescenteFireworkProjectileaPrefabsà mão. - Diagnóstico: o aviso de enxurrada de ouro (
[Diag] enxurrada de eventos de ouro) passa a usar 40 eventos por segundo por jogador; com 3 jogadores, cada abate gera 3 eventos e um pico normal de abates já disparava o aviso. - Correções do jogo (
[GameFixes]): o Dunestrider que morria sem o ponto "Center" no modelo estouravaNullReferenceExceptionno efeito de morte antes de destruir o modelo e o corpo, e o jogo não tentava de novo: o corpo morto ficava no servidor até o fim do estágio. Agora o efeito usa a posição do corpo e a limpeza do jogo roda inteira (uma checagem por morte de Dunestrider). O Baú Mímico sem o ponto "Muzzle" no modelo estourava ao abrir e ao se enterrar; ao abrir, o estouro pulava a linha que marca o mímico como "ator falso", mas a saída do estado desmarcava mesmo assim: o contador ficava negativo e a camada de colisão do mímico, errada. Agora o mod trata só esse estouro esperado e completa a linha pulada. - Diagnóstico: passam a ser contados como ruído conhecido do jogo o
CombatSquad has no living members. Triggering defeat...(registrado como erro quando um grupo de chefe/evento é derrotado) e oUnable to set gate state for ...(mapa que referencia uma passagem ausente do grafo de navegação, ao carregar o estágio) e oPickupDisplay bounds are zero!(modelo de pickup do jogo com tamanho zero, como o do HelpWake), além dos erros de rede e da prévia de personagem quando alguém sai do lobby (host id {0} invoked wrong io operation,host id {0} out of bound...,SurvivorMannequinSlotController.ApplyLoadoutToMannequinInstance) e oNullReferenceExceptiondo Extractor Unit sem animator (ExtractLunge.OnEnter; sem animator ele não ativa a hitbox e não rouba itens, então não há o que corrigir) e o do Solus Amalgamator (DetatchState.OnEnter: o jogo dispara as separações no corpo já morto, sem modelo).
0.10.2
- Diagnóstico de travamento: a vigia grava a cada 5 s um "último sinal de vida" em
BepInEx/ror2meeeee-heartbeat.txt(estágio, frame, monstros, abates, ouro, lâminas cortadas, exceções, RAM). Fechar o jogo normalmente apaga o arquivo; se ele existir na abertura seguinte, o log ganha[Vigia] a sessão anterior não fechou normalmente...com o estado da partida no fim. Motivo: numa run de 3 jogadores o processo inteiro congelou (log, Unity e a própria vigia pararam no mesmo segundo) e não sobrou nada para saber o que acontecia. - Dificuldade: as almas do Artefato da Alma (uma por monstro morto, milhares por run) não recebem mais os itens de Boost de vida e dano; morrem num golpe e o Boost só custava um recálculo de atributos a cada uma.
- Lâminas Fantasmas (
[GhostBlades]): teto padrão de 15 para 10 por segundo (a run que travou ficou no teto, ~400 lâminas a cada 30 s). Vale para configs novas; em uma existente, mudeMaxPerSecondà mão. - README reescrito para o Thunderstore: cada artefato, item, equipamento, elite e sistema em uma seção própria, com o que faz, como usar e um exemplo; tabela de resumo, comandos e perguntas frequentes. Descrição e site do pacote atualizados.
- Elite Eco: se o projétil dos ecos vier sem ghost (endereço e referência vazios), o mod usa o
EchoHunterGhostdo jogo para os tiros não ficarem invisíveis. - Bazar Maior: o item que flutua sobre o baú podia ser pego (o
Start()do jogo zerava a marcaconsumedque o mod colocava logo depois de criá-lo). Agora a vitrine usa um tempo de espera infinito, que o jogo não reinicia, e nunca é concedida. Com o Artefato do Comando, o baú volta a soltar o cubo de escolha do mesmo tier em vez do item direto; só a vitrine ignora o artefato. - Correções do jogo (
[GameFixes]): a Craca do Vazio chamava um efeito de spawn vazio a cada vez que nascia (o 1.5.0 deixou o endereço do efeito em branco), gerando um erro com pilha no log por craca. O mod descarta o efeito vazio antes; sem custo por tick, uma checagem por spawn. A Defective Unit estouravaNullReferenceExceptionao morrer já sem modelo (o jogo lia o modelo sem checar); nesse caso o mod pula só o trecho do efeito de morte, que não teria onde aparecer. ror2meeeee_reload: o texto de ajuda dizia queEnabledexigia reiniciar; ele já vale na hora, entre partidas.- Desempenho: o crédito do Dízimo (
[Gold]) não monta mais uma string de diagnóstico a cada ouro ganho (só quando a enxurrada é detectada, uma vez por estágio); o Grimório guarda o efeito de teleporte em vez de recarregá-lo a cada uso. - Métrica de carga: a linha
[Carga]agora lista as etapas do Awake que levaram 5 ms ou mais (registro de cada item/artefato/elite, interface, config,Enablede cada feature e tela de mods), para achar o que pesa na abertura. - Diagnóstico: passam a ser contados como ruído conhecido do jogo (não do mod) o
IndexOutOfRangeExceptiondo Facepunch na lista do lobby quando alguém entra, oAddPlayerduplicado ao um jogador entrar (already a player at that playerControllerId/connection has already been set as ready), oNullReferenceExceptiondoSteamworksLobbyDataGeneratorno lobby, o doViewableTag.OnDisableao fechar o jogo e oGenericPool: ReleasePools called on non-empty poolda troca de cena e oAssignClientAuthorityde ajudantes do jogo. O aviso de "erro novo" mostra a primeira linha da pilha e ignora números (IDs de conexão) ao decidir se o erro já foi visto.
0.10.1
- Elite Eco volta a funcionar no jogo 1.5.0: o patch moveu os assets do Eco de
RoR2/InDev/paraRoR2/Junk/(edEcho.asseteEchoHunterProjectile.prefab); na 0.10.0 o elite não era registrado e o log mostravaInvalidKeyException ... Key=RoR2/InDev/edEcho.asset.
0.10.0
- Bazar Maior (
[Bazaar], novo, ligado; reescrita do BiggerBazaar 1.14.5): o Bazar entre Tempos ganha até 6 baús com o item à mostra, comprados com o ouro que sobrou do estágio (o ouro não vira XP ao entrar no portal do bazar) ou com moedas lunares (PayWithLunarCoins), e um casulo ao lado do Newt que troca moeda lunar por ouro. Peso, preço, preço lunar e estoque por tier (10 compras por baú), sem limite de compras por jogador; limite de trocas no casulo; 10% de chance de baú de itens temporários. Em relação ao original: preço = baú pequeno do estágio anterior × multiplicador (o original escalava duas vezes), sorteio próprio (não mexe no RNG da run), item comprado cai no chão e passa pelo Multiplicador/Comunismo, a Sale Star não é gasta à toa, o casulo não dispara Fogos, o Reciclador não troca o item à mostra, o Comando não troca o item comprado, itens únicos do mod ficam fora da loja e o hack do Captain não abre os baús. Sem ShareSuite, sem preço dos terminais originais do bazar e sem compra direto no inventário. - Elites novos (
[Elites], novo, ligado; reescrita do MoreElites 0.9.5 e do BlightedElites 1.2.2): Volátil, Frenético e Fortalecedor (T1, com versão de Honra), Arruinado e Eco (T2). Só assets do jogo: o Frenético é o elite amarelo do jogo e o Eco é o edEcho do jogo, que o diretor nunca sorteava. Em relação aos originais: mísseis e teleporte só no host (não duplicam nos clientes), o aspecto Frenético usado por jogador não teleporta para (0,0,0), o elite de Honra tem os stats de Honra do jogo, o Volátil não dá um Brilliant Behemoth que nunca sai, o Fortalecedor não apaga um Warbanner de verdade, o projétil do Eco é registrado (chegava aos clientes sem catálogo) e os tiers vêm do R2API.Elites, não de índices fixos. Nova dependência: R2API_Elites 1.1.3. - Elite Dourado em IA (
[GameFixes]): drones, aliados e monstros Dourados soltavam pepitas de ouro a cada golpe em quem não é jogador, sem o cooldown nem a chance que o jogador tem, até travar a partida. Agora seguem a regra do jogador (mesma correção do GildedChunkSpamFix; não instale os dois). - Artefato do Enxame (
[GameFixes]): as cópias do Enxame nasciam em cima do jogador ou não nasciam, porque o jogo deixava zeradas as distâncias de spawn delas nos spawns normais do diretor. Agora recebem as distâncias do spawn original (mesmo bug que o SwarmsFix corrige; não instale os dois). - Tela de soltar itens (F7): parou de criar estilos de texto novos a cada desenho (vários por frame, um por item) e só procura ícones no HUD quando falta algum, em vez de a cada 0,5 s. Menos lixo de memória com a tela aberta.
- Chamado da Horda: a descrição dizia +25% por cópia; o padrão é +50% (
Horde.QuantityPerStack = 0.5). - Progressão: fechar o jogo logo depois do fim da run não perde mais o nível nem a linha do CSV (a gravação roda na hora quando o jogo está fechando).
- Teto de projéteis (
[ProjectileBudget]): projéteis fora da listaPrefabscortados pelo teto global perdiam o dano; agora ele vai para o próximo disparo do mesmo tipo, como já acontecia com os da lista (dano total mantido).
0.9.6
- Teto de projéteis (
[ProjectileBudget]), novos padrões medidos numa run de 3 jogadores (~8 mil itens, FPS caindo para ~11 nas lutas):DaggerProjectile,EngiGrenadeProjectileeShurikenProjectileentram na listaPrefabs;PerTypeMaxPerSecond15 (antes 30) eGlobalMaxPerSecond80 (antes 300, que nunca era atingido). O dano total continua o mesmo: menos projéteis, cada um mais forte. - Lâminas Fantasmas (
[GhostBlades]):MaxPerSecond15 (antes 30, que ficava sempre no teto). - Partículas (
[Particles]): explosões (OmniExplosionVFXQuick) saem da isenção total e ganham teto próprio maior: nova listaRaised(padrãoOmniExplosionVFXQuick) comRaisedMaxPerSecond60. Sem teto, eram o efeito mais frequente da run (190 mil+).Exemptpassa a ter só os golpes do Mercenary. - Correções de bugs do jogo (
[GameFixes], novo, ligado): erros que se repetiam centenas de vezes por partida (com pilha no log, custando FPS) deixam de acontecer:- Runic Lens: se quem acertou morre antes do meteoro cair, o jogo repetia o erro a cada tick; o meteoro desse golpe é cancelado.
- Unstable Transmitter: corpo com o item e sem inventário dava erro a cada frame; orbe cujo dono já morreu dava erro ao tocar inimigos; inimigo sem modelo não era teleportado e perdia também sangramento, atordoamento e debuff (agora fica onde está e recebe o resto do efeito).
- War Bonds: torreta do Engi com o item dava erro ao morrer.
- Equipamento: corpo sem inventário com pedido de uso de equipamento dava erro a cada tick.
- Log: as linhas por uso do Ghor's Tome e do Bundle of Fireworks (
[LimitedCalc], centenas por run) só aparecem comGeneral.VerboseLogging. - Configs existentes mantêm os valores salvos: para pegar os novos padrões, apague as chaves (ou o
.cfg) ou ajuste na tela de mods.
0.9.5
- Partículas: teto padrão reduzido para 10/s por tipo de efeito (antes 20/s), com exceções padrão para os
golpes do Mercenary (
BladeComboSwingEffect) e explosões (OmniExplosionVFXQuick), que seguem completos. Configs existentes mantêm os valores salvos deMaxPerSecondeExempt.
0.9.4
- Atualizado para o Risk of Rain 2 1.5.0#1224 (Steam build 25921972): sem o aviso de versão divergente no log.
- Égide Vampírica e Égide do Devorador ganharam modelo 3D próprio (escudo redondo com umbo: vermelho e dourado / roxo com brilho do Vazio), no chão e no logbook, no lugar do Rose Buckler e do Safer Spaces.
- Pregos Enferrujados / Espinhos do Vazio: corrigidas 6 chaves de assets do jogo que nunca carregavam (ícone da
marca do Estilhaço, rastro dos pregos, efeito da detonação e modelo reserva). Some o
InvalidKeyExceptionno início. - Métrica de carga: o log ganha
[Carga] Awake em X ms(registro de itens/artefatos e features/hooks separados). - Partículas: o corte local (
Disable) virou teto por segundo para todos os efeitos (MaxPerSecond, padrão 20/s por tipo de efeito), menos os listados emExempt. Vale também para o que cada jogador envia aos outros, host incluído: quem tem o mod gera e transmite menos efeitos. Na troca de fase o log diz quantos efeitos o teto segurou. A chaveDisableantiga deixa de ser usada. - Multiplicador:
Multiplier.StackCappassa a ter padrão 150 e vale para qualquer item multiplicado ou compartilhado (antes os itens do Cálculo limitado eram isentos). Teto rígido: item pego com o stack já no teto some, sem entrar no inventário, com aviso no chat; o compartilhamento não dá nada a quem já está no teto. Impressora, caldeirão egive_itemnão passam por esse teto. Configs existentes mantêm o valor salvo. - zzz cervo <3 ganhou modelo 3D próprio (cervo marrom de olhos esbugalhados, boca aberta e patas finas), no lugar do Paul's Goat Hoof.
- Bateria do Portal ganhou modelo 3D próprio (bateria deitada de metal gasto, anéis escuros e faixa/terminal ciano), no lugar da Fuel Cell do jogo.
0.9.3
- Partículas: com
Particles.CountSpawnsligado, a lista dos 20 efeitos mais frequentes da run (a mesma doror2meeeee_effects) sai sozinha no console e noLogOutput.loga cada fase nova ([Particles] efeitos mais frequentes após N fase(s)). Roda em cada jogador, não só no host.
0.9.2
- Ghor's Tome no cálculo limitado (
[LimitedCalc.GhorsTome], padrãoAggregate,Limit = 5): a chance de soltar pacote de ouro fica em até 4% ×Limit(20%) e cada pacote vale proporcionalmente mais (até 5×), mantendo o ouro esperado por kill com menos pacotes no mapa.Clampsó corta a chance;Off= como no jogo. Vale para todos os jogadores, pela config do host. Log:[LimitedCalc] GhorsTome Aggregate: pacote X -> Y.
0.9.1
- Pilha de Pregos Enferrujados e Pilha de Espinhos do Vazio ganharam modelo 3D próprio (pilha de pregos enferrujados / roxos), no chão e no logbook, no lugar da Tri-Tip do jogo.
- Com
General.VerboseLoggingligado, oLogOutput.logregistra cada prego, espinho do Vazio e detonação (RustyNail: ...). - Ícones próprios do Artefato do Comunismo no lobby.
0.9.0
- Novo item Pilha de Pregos Enferrujados (branco): 2% de chance por golpe (+0,1% por cópia extra) de disparar um
prego de 10% do dano base (+0,1% por cópia extra) que aplica sangramento. Console:
give_item Ror2MeeeeeRustyNailStack 1. - Novo item Pilha de Espinhos do Vazio (void; corrompe a anterior): 2% de chance (+0,5% por cópia extra) de disparar
um espinho de 10% do dano base (+0,5% por cópia extra) que marca o alvo com Estilhaço do Vazio por 3 s. Ao fim, detonação
de 250% e chuva de espinhos num raio de 12 m (150%, +50% por cópia extra) que marca os atingidos. A cadeia é limitada
por
RustyNail.MaxChain(padrão 2). Console:give_item Ror2MeeeeeVoidSpikeStack 1. - Tela de soltar itens (F7): a quantidade agora respeita
Drop.MaxPerCommand(antes a tela deixava escolher 50, o servidor soltava 10 e o valor não batia) e a contagem cai na hora. Novo campo para digitar a quantidade e botões −1, +1, +5 e +10. - Compartilhamento virou o Artefato do Comunismo: só funciona com o artefato ativo no lobby (a opção
Sharing.Enabledfoi removida) e agora compartilha todo tipo de item (lunar e void mesmo sem multiplicar, sucata, tiers das expansões, temporários e alugados no mesmo modo).
0.8.6
- Probe: três colunas novas por janela de 30 s, para achar o que pesa em runs longas:
heal_events(quantos eventos de cura, não só quanto),minions(drones, torretas e outros ajudantes dos jogadores) eplayer_items(total de cópias de itens dos jogadores). Também no log[Probe] Fase ...e notools/probe-report.py. O CSV antigo é arquivado sozinho. - Grimório: quando não há diretor de combate ativo (Bazar, fim de estágio), o chat diz "Sem diretor ativo: nenhuma onda desta vez" em vez de dizer que o contrato foi cobrado. Nomes no chat e no log sem os títulos de elite.
- Novo
[ProjectileBudget]: teto de projéteis dos jogadores e ajudantes, no host. Por tipo (Prefabs, padrão StickyBomb, FireMeatBall (Molten Perforator) e LightningStake;PerTypeMaxPerSecond30) e global (GlobalMaxPerSecond300). Acima do teto o projétil não sai e o dano dele vai para o próximo: menos projéteis, cada um mais forte, mesmo dano total. Em runs longas esses itens passavam de 11 mil projéteis em 30 s (~1 FPS) e o lixo gerado causava travadas de vários segundos. Projéteis de monstros não mudam. - Chamado da Horda não é mais multiplicado nem compartilhado (1 pickup = 1 cópia, como o Cano Extra). Com 3-4 jogadores ele chegava a 60 cópias e x43 inimigos, com ciclos de morte e quedas de FPS.
- Lâminas Fantasmas: teto padrão de 100 para 30 por segundo (com 100 ficava sempre no teto, ~2,8 mil projéteis por 30 s).
Configs existentes mantêm o valor gravado; ajuste
GhostBlades.MaxPerSecondse quiser.
0.8.5
- Lápide: quem morre com vida extra do jogo (Dio's Best Friend ou a versão do Vazio) não gera lápide; o jogo já o traz de
volta. Antes a lápide aparecia e sumia 2 s depois. Log:
[Revive] X morreu com vida extra ... sem lápide.
0.8.4
- Tela de status (F8): falhava ao abrir ("Expected data type ULong, got data type Double"). As estatísticas da run são inteiras no jogo; agora são lidas com a leitura que aceita qualquer tipo.
0.8.3
- Lápide sem visual e marcador do I.M.P. invisível (desde a 0.7.0): os prefabs dos efeitos do mod (modelo da lápide,
pulso silencioso, marcador do contrato) eram criados no menu sem
DontDestroyOnLoad; a primeira troca de cena os destruía e o envio era pulado em silêncio. Agora sobrevivem às trocas de cena. - Coração Pesado/Bastião: vida máxima + escudo agora param em 1 bilhão. Acima de ~2,1 bilhões a barra de vida do jogo (que usa int) estourava e lançava OverflowException a cada frame (centenas por minuto no log, custo de desempenho).
- Nova tela de status (
Stats.MenuKey, padrão F8): atributos atuais do seu personagem (vida, escudo, regeneração, dano, velocidade de ataque, crítico, armadura, velocidade, nível) e totais da run (dano causado, dano dos ajudantes, maior golpe, cura, dano recebido, abates, mortes, itens). Os totais vêm das estatísticas do próprio jogo (as da tela de fim de run). Mostra todos os jogadores: vida, dano e totais da run de cada um. O jogo só manda ao cliente os próprios totais; o host envia os de todos a cada 2 s (só com cliente conectado). Nova dependência: R2API Networking. - Telas F7 (soltar itens) e F8 (status): fecham só pela própria tecla (Esc não fecha mais) e não abrem uma sobre a outra.
0.8.2
- Ordem de aplicação fixa para os itens que mexem em vida, escudo, velocidade e dano (antes, cada item tinha o seu hook e
a ordem dependia de quem registrou primeiro). Um hook só por ponto do jogo (
BodyHooks), ligado só com portador:- Status: Coração Pesado (vida) -> Bastião (escudo sobre a vida já multiplicada) -> Cervo (velocidade em dano) -> vida e escudo atuais reajustados uma vez, no host.
- Dano recebido: Égide sorteia o bloqueio -> Coração Pesado aumenta o dano de inimigo (só se não bloqueou) -> jogo ->
Égide rouba vida se bloqueou.
Log:
[BodyHooks] hook de stats/dano ligado/desligado.
- Taxa do Taxade é sempre o último passo: calculada sobre a vida máxima final e aplicada direto, sem bloqueio da Égide nem aumento do Coração Pesado. A Égide também passa a respeitar BypassBlock (como o Tougher Times do jogo).
- Compras com ordem fixa (
PurchaseHub, um assinante só): Spend registra o gasto e o Taxade vem por último (antes, a ordem dependia de qual feature ligou primeiro, inclusive ao religar pela tela de mods). O custo de vida do revive também passa direto, como a taxa. - Bateria do Portal: como os outros itens, os hooks das zonas de carga só existem enquanto alguém tem o item. Log:
[PortalBattery] hooks de carga ligados/desligados.
0.8.1
- Coração Pesado: o aumento de dano recebido só vale para dano vindo de outro personagem. Antes ele também multiplicava cobranças em vida (Void Cradle, Santuário de Sangue): abrir um baú do Vazio deixava o jogador com 1 de vida, e o golpe seguinte matava. Queda e dano sem atacante também não aumentam mais.
- Artefato Taxade: abrir um baú normal podia matar (com Tax.Lethal desligado). O limite "deixa 1 de vida" era calculado antes de outros efeitos multiplicarem o dano (Coração Pesado, Death Mark). Agora o dano da taxa é NonLethal: o próprio jogo garante 1 de vida, seja qual for o multiplicador.
0.8.0
- Novo item lunar Coração Pesado (
[HeavyHeart]): cada cópia multiplica a vida máxima por 1,5 e o dano recebido por 1,3 (composto, sem teto: 10 cópias = vida x57,7 e dano x13,8). Ao pegar o item a vida extra já vem cheia (como os itens de vida do jogo); ao perder, a vida é cortada no novo máximo. Modelo: Pearl. Console:give_item Ror2MeeeeeHeavyHeart 1. - Novo Artefato do Vazio (
[VoidBounty]): com ele ativado no lobby, cada estágio ganha +5 baús do Vazio (Void Cradle;VoidBounty.ExtraChests) e todo baú do Vazio sorteia entre todos os itens do Vazio (branco 60%, verde 30%, vermelho 8%, boss 2%). Preço: todos os inimigos nascem com +50% de vida. Precisa do DLC Survivors of the Void na run. - Novo item verde Bateria do Portal (
[PortalBattery]): o teleportador e as outras zonas de carga carregam +10% mais rápido por cópia, somando as cópias de todo o time (sem teto). Modelo: Fuel Cell. Console:give_item Ror2MeeeeePortalBattery 1. - Novo item vermelho Bastião (
[Bastion]): escudo de 40% da vida máxima por cópia (sem teto) e o escudo começa a recarregar 2 s depois do último golpe (o jogo espera 7 s), na mesma velocidade de recarga do jogo. Modelo: Personal Shield Generator. Console:give_item Ror2MeeeeeBastion 1. - Grimório do Stolas: em mapas com poucos nós (Bazar) o teleporte "até o aliado" caía num ponto aleatório do mapa (o jogo usa um ponto aleatório quando não acha nó livre perto). Agora só aceita nó a até 10 m do aliado; senão, 2 m atrás dele, no chão. O log mostra a distância final.
0.7.1
- Lápide sem visual na 0.7.0: o Overlay volta a ficar sempre ligado (a otimização que o desligava quando ocioso foi
desfeita) e o modelo do Dio's Best Friend é medido e ajustado para ~2,5 m de altura (a escala nativa do modelo de
pickup não é confiável). Log
[Revive] lápide visível nesta máquina: ...na 1ª vez de cada sessão. - Todos os jogadores precisam desta mesma versão (0.7.0 teve vários pacotes com conteúdo diferente).
0.7.0
- zzz cervo <3: o hook em
CharacterBody.RecalculateStats(todo corpo, monstros inclusive) só fica registrado enquanto alguém tem o item, como já era no Cano Extra, nos Fungos e nas Égides. Log:[Cervo] hook de stats ligado/desligado. - Novos itens Égide Vampírica (verde) e Égide do Devorador (void verde, corrompe a primeira),
[Aegis]. Ambas dão 5% de chance de bloquear (não acumula) e reagem a qualquer bloqueio do jogo (Tougher Times, Safer Spaces, parry, armadura do Captain); imunidade/invencibilidade não conta. Vampírica: rouba 8% da vida atual do agressor por cópia (até 50%) e cura você. Devorador: onda do Vazio que rouba 3% da vida atual de cada inimigo num raio de 13 m (+3% e +2 m por cópia, até 20% e 30 m) e cura pela soma. Modelos: Rose Buckler e Safer Spaces. Console:give_item Ror2MeeeeeVampiricAegis 1/give_item Ror2MeeeeeDevourerAegis 1. - Modelos 3D no chão para os itens do mod (antes todos eram a "caixa misteriosa"): Chamado da Horda = War Horn, zzz cervo <3 = Paul's Goat Hoof, Cano Extra = Brilliant Behemoth, Contrato da I.M.P. = Death Mark, Grimório do Stolas = Ghor's Tome, Capitalismo = Roll of Pennies. Se um modelo não carregar, volta para a caixa misteriosa.
- Novos itens Fungo Egoísta (verde) e Fungo Egoísta do Vazio (void verde, corrompe o primeiro),
[SelfishFungus]: curam sempre (andando ou parado) só você e seus drones/torretas/ajudantes, onde estiverem; não curam outros jogadores. Egoísta: 5 de vida por segundo (cresce 20% por nível) +0,01% da vida máxima por cópia extra, com o brilho do Medkit a cada 3 s. Vazio: 15/s +0,5% por cópia extra, com a aura roxa do Weeping Fungus. A base é fixa (não em %) para não escalar com a vida inflada pelo multiplicador. Ninguém com vida cheia é "curado" (sem eventos de cura à toa). Console:give_item Ror2MeeeeeSelfishFungus 1/give_item Ror2MeeeeeSelfishFungusVoid 1. - Grimório do Stolas: agora teleporta para perto do primeiro aliado vivo (na ordem da lista de jogadores). Sozinho, ou com todos os outros mortos, continua indo para o teleportador; sem aliado e sem teleportador (Bazar, Lua) o uso não é gasto.
- Contrato da I.M.P.: o aviso "novo contrato" e o marcador "ALVO DO CONTRATO" (maior, fonte 26) aparecem para todos os jogadores, não só para o host. O marcador some sozinho em ~1 s quando o alvo morre.
- Lápide (Artefato da Ressurreição): agora tem o modelo 3D do Dio's Best Friend (2,5x) no local, e o marcador
"LÁPIDE de <nome>" ficou maior (fonte 30) e aparece para todos os jogadores, não só para o host. O host reenvia o
modelo como efeito a cada 1 s; ao reviver, ele some em ~1 s. Nova dependência de compilação:
Unity.Addressables. - Overlay (avisos e marcadores) e tela de soltar itens ficam desligados quando não há nada na tela: o Unity deixa de
chamar o
OnGUI/Updatedeles a cada frame. A teclaDrop.MenuKeypassa a ser lida no update do jogo. - Cano Extra: os hooks de disparo (
BulletAttack.Fire,ProjectileManager.FireProjectile,OrbManager.AddOrb) só ficam registrados enquanto algum corpo tem o item. Sem portador, nenhum tiro do jogo (inclusive de monstros) passa pelo mod. O log mostra[CanoExtra] hooks de disparo ligados/desligadosa cada mudança. - Ícone do pacote (r2modman) agora é a mesma arte da tela de mods do jogo (
Assets/mod_icon.png). Até a 0.6.5 o zip levava umicon.pngantigo, copiado de versão em versão.
0.6.5
- Novo
[GhostBlades]: teto de gerações/renovações das Lâminas Fantasmas (item Curse do DLC4) por segundo (GhostBlades.MaxPerSecond, padrão 100; 0 = sem teto). Em runs longas o jogo chegava a ~700 por segundo (20 a 47 mil projéteis por 30 s), o que levava a memória nativa a mais de 3 GB e o frame a 100-300 ms. Só no host;GhostBlades.Enableddesliga.ror2meeeee_statusmostra quantas foram puladas.
0.6.4
- Tela de soltar itens: a imagem agora é lida dos ícones que o próprio HUD do jogo já desenhou (
ItemIcon), porquepickupIconTexture/pickupIconSpritechegavam nulos. Se ainda faltar imagem, o log lista os campos de ícone doItemDef([DropMenu] campos de ícone ...) e o quadrado mostra o nome.
0.6.3
- Tela de soltar itens: os ícones continuavam em branco na 0.6.2. Nesta versão do jogo
pickupIconSpriteestá obsoleto e vem nulo; a imagem agora vem deItemDef.pickupIconTexture(comPickupDef.iconTexturee os sprites antigos de reserva). Sem imagem, o quadrado ainda mostra o nome do item.
0.6.2
- Tela de soltar itens: os ícones estavam em branco. Agora usam
PickupDef.iconSprite(o mesmo da UI do jogo), comItemDef.pickupIconSpritede reserva; sem imagem, o quadrado mostra o nome do item na cor da tier. O log registra[DropMenu] ícones: N de M itens com imagemna primeira abertura.
0.6.1
- Soltar itens: item solto com o
Drope pego de volta não é mais multiplicado nem compartilhado de novo. Antes, soltar 4 e pegar de volta com multiplicador x10 virava 40 (duplicação); agora volta 4. O registro de itens soltos zera a cada estágio e a cada run. - Tela de soltar itens refeita: grade de ícones grandes (escalada pela resolução), clique no item mostra o painel dele já selecionado
(nome, quantidade, botões grandes), cursor liberado enquanto aberta; setas movem, +/- quantidade, Enter solta.
Novo comando
ror2meeeee_drop_menu [nome]abre a tela já com o item escolhido.
0.6.0
- Novo "Soltar itens" (
[Drop]): comandoror2meeeee_drop [nome] [quantidade]e menu na tela (teclaDrop.MenuKey, padrão F7; setas escolhem, Enter solta). Solta itens do próprio inventário no chão para dar a um aliado;Drop.MaxPerCommand(padrão 10). - Grimório do Stolas: teto de crédito por uso (
Grimoire.MaxCreditPerUse, 600) e trava por monstros vivos (Grimoire.MaxMonsters, 80); com a trava o uso ainda teleporta, só não dá crédito. - Contrato da I.M.P.: teto do ouro extra por contrato (
ImpContract.MaxGold, 20000); o log mostra quanto tempo o alvo viveu. - Diagnóstico sempre ligado:
[Identidade]e[Config]no início (versão, build da DLL e configs), resumo[Estágio]por estágio (duração, pior frame, abates, pico de monstros, ouro/crédito, exceções, erros novos do jogo),[Vigia]para travadas (jogo sem atualizar por 3 s ou mais), classificação dos erros do Unity (ruído conhecido contado, erro novo logado uma vez) e detector de enxurrada com pilha de chamadas (ouro e dano), uma vez por estágio. - Probe: monstros (média/pico), eventos de ouro, crédito dado/cortado, variação de memória Unity e pior frame por fase
(colunas novas no CSV; o antigo é guardado à parte) e
ALERTAquando a fase degrada (frame médio mais de 3x a melhor fase da run, +300 MB de memória nativa ou frame acima de 1 s), com os monstros vivos por tipo. ror2meeeee_statusmostra o diagnóstico (ouro, monstros, exceções, usos do Grimório e custo amostrado do hook de ouro).- Ressurreição: o log mostra quando a posição da lápide foi ajustada, o tempo de vida de cada lápide e o tempo até o revive.
0.5.0
- Ressurreição: a lápide agora aparece na tela de quem roda o mod (banner e marcador com nome e distância; seta na borda quando fora de vista).
- Ressurreição: pulsos repetidos usam um clone silencioso do efeito (o som toca só uma vez, na criação da lápide); coluna de luz visível de longe.
- Ressurreição: lápide criada em posição segura (chão abaixo da morte; sem chão, no aliado vivo mais próximo), evitando lápide inalcançável fora do mapa.
- Contrato da I.M.P.: o alvo ganha marcador vermelho na tela e banner de aviso.
- Dízimo: novo teto de crédito por segundo (
Gold.MaxCreditPerSecond, padrão 150) e trava por monstros vivos (Gold.MaxMonsters, padrão 80), contra a bola de neve ouro -> crédito -> inimigos -> lag. - Dízimo: o log registra a pilha de chamadas na primeira enxurrada de eventos de ouro (diagnóstico).
- Novo comando de console
ror2meeeee_demo: mostra por 15 s a lápide e o alvo de teste na tela.
0.4.0
- Desempenho do Cano Extra: orbs extras (flechas da Huntress) clonados sem reflexão por tiro e rotações do leque pré-calculadas.
- Ressurreição: jogador morto operando um drone (Operação Remota) agora conta como morto e a lápide revive; drone operado não revive ninguém.
- Ressurreição: logs de diagnóstico (artefato ativo por estágio, lápide criada/removida, morte sem artefato).
- Um único hook em CharacterMaster.GiveMoney para Taxade e Dízimo (antes eram dois).
- Logs de compra (Taxade) e de multiplicação (Multiplicador) amostrados: as primeiras da run e depois 1 a cada N.
0.3.0
- Novos itens (tema Helluva Boss):
- Equipamento lunar "Grimório do Stolas": teleporta para o teleportador; cada uso dá crédito ao diretor (onda de inimigos).
- Item vermelho "Contrato da I.M.P.": o primeiro elite ou chefe do estágio vira alvo marcado; matá-lo paga ouro extra (+100% por cópia) e solta um item verde.
- "Artefato da Ressurreição": quem morre deixa uma lápide; um aliado perto dela por 3 s revive o jogador com metade da vida, pagando metade da própria vida.
- Ícones provisórios (cor sólida).
- Novo item vermelho "Cano Extra": +1 tiro em leque na arma principal por cópia (até
MaxExtraShots, padrão 5; teto global por frame). Não é multiplicado; torretas não copiam. Custo zero por tiro quando ninguém tem o item. - Novo item void verde "zzz cervo <3": toda a velocidade de movimento extra vira dano (1:1, +50% de conversão por cópia extra). Sai em Void Cradles.
- Novo
[Cleanup]: cadáveres somem rápido (máximo 10, 2 s, mesmo à vista) usando o sistema do jogo; corrige o erro do jogo no Totem dos Lynx (NullReferenceException a cada tick quando os aliados já morreram). - Artefato do Dízimo: o diretor agradece no chat o ouro recebido (em R$), acumulado, no máximo 1 vez por
Gold.ThankIntervalSeconds(padrão 60 s) e no fim do estágio. - Artefato Taxade: a taxa vale para toda compra paga com ouro (baús, santuários, drones...) e nunca para outras moedas.
- Padrões novos: quase todas as features ligadas, multiplicador x10 com lunares/void, dificuldade +75% vida/+50% dano, Horda 0.5/20, Fireworks em Aggregate (20). Probe continua desligado.
- Descrições da tela de mods reescritas: cada
Enabledexplica o que a feature faz e do que depende. - Probe: coluna
ram_unity_alloc_mb(memória alocada, em vez de reservada); CSV antigo é guardado à parte. - Correção: ao fechar o jogo no meio da run, o CSV do Spend e a última janela do Probe se perdiam; agora são gravados na hora.
- Interno: acesso aos diretores de combate centralizado em
Common/Directors(nenhuma feature referencia outra).
0.2.0
- Novo: progressão de dificuldade entre runs (
[Progression]), com resumo da run no chat e CSV de histórico. Cálculo e gravação em disco fora da thread principal. - Novo: itens "Capitalismo" (branco/verde/vermelho): alívio da taxa do Taxade e bônus de ouro (+10/+20/+30%); 1 de cada por jogador, trocados no baú de quem já tem.
[Tax]passa a vir ligado por padrão.- Desempenho: hooks de
LimitedCalceParticlessó ficam registrados quando há algo a fazer; ícones sem cópia na RAM; menos alocação em Sharing, Spend e Probe; cache de reflexão no Difficulty. - Correção: memória que crescia por inimigo durante a run (Difficulty).
0.1.0
- Primeira versão: multiplicador, cálculo limitado, dificuldade, item Chamado da Horda, Probe.