#archived-modding-development

1 messages · Page 488 of 1

supple sedge
#

thx

fair rampart
#

Where can i find Language Resource Keys?

vocal spire
#

Wdym

vocal spire
#

Idk how to find the default ones

copper nacelle
#

you just log them in a mod

vocal spire
#

Oh

#

I thought we could do it that way, but I thought there was probably a way more efficient method for it

copper nacelle
#

you can dump the language xml using unity studio

#

dunno if that's more effort

vocal spire
#

One way you need to see all text in the game

#

The other idk the steps

fair rampart
#

Is there anywhere these are already dumped that i can just look up?

ornate rivet
fair rampart
#

@ornate rivet that'll do, thanks!

ornate rivet
#

yepp

#

we should probably pin that or something tbh
it's very useful but I always forget it exists

fair rampart
fair rampart
#

Think i'm done with this mod, it allows changing all Charm Notch cost from a config file.

vocal spire
#

Cool

#

Is there a way to reset the amount of notches?

fair rampart
#

yeah, you just remove the entry from the xml file and it'll return to normal once you unequip the charm

fair rampart
vocal spire
#

@fair rampart Playerdata is used a lot of mods

fair rampart
#

Where is Divine's prices stored for upgrading items?

vocal spire
#

You can probably find out by looking at her fsm

#

Best case is it’s a pre set value in the fsm variable

fair rampart
#

how do i get her fsm?

vocal spire
#

Do you have fsm veiwer

fair rampart
#

no?

vocal spire
#

Once you get it, click the top left button, then open scene, then find the name of the scene divine is in by searching something like grimm, then click select, then find the fsm(might take a couple tries. If you don’t get it, click the option next to the top left option to re open the scene) once you get it, click around until you find stuff about it

fair rampart
#

Okay i've found something with "Upgrade Cost" but no numbers

vocal spire
#

Screenshot?

jolly jungle
#

This is probably asked a lot, but how can I make a custom skin, for self use/customknight?

#

Simply take the sprite sheets and reskin them?

young walrus
#

yup

jolly jungle
#

Alright, thanks

#

Ah never mind

fair rampart
#

@unborn flicker I'm trying to use your ItemChanger mod to add items to shops but using ChangeItems always overrides the existing items, is there anyway to just add items instead of replacing all existing ones?

unborn flicker
#

One of the arguments for ChangeItems is an enum specifying which items to leave in shops

fair rampart
#

@unborn flicker Further testing shows that it works but not for Sly's alt shop, with that one it overrides everything :oc

novel sierra
#

is there a way to make the game harder but without changing like your own damage

#

im using the bonfire mod right i tried chaos mod and hell mod and they both downgrade your stuff

fair rampart
#

There is that harder new game+ difficulty :oc

young walrus
#

sanic mod

#

speeds up game

#

otherwise, there's really no other knobs to turn besides changing enemy/boss attacks

#

which some boss mods do

#

but not for the entire game

fair rampart
#

You could make charms that affect how much damage you take but grant you some bonuses, that would affect all incoming attacks

young walrus
#

taking more dmg is effectively the same as lower your own hp

#

the knobs for difficulty aren't that complex. you have choices like:
-self hp, self dmg
-enemy hp, enemy dmg
but these correlate with each other anyways.

so then all that's left is speed and attack set

#

you could make the knight's attack range super tiny maybe?

fair rampart
#

hmm, change enemy speed but keep yours the same?

young walrus
#

which is speed

#

like i said

#

sanic mod can do that

#

I think it keeps the knight's speed the same anyway

#

ah no. it is everything

#

but still.

fair rampart
#

@unborn flicker oi :O

young walrus
#

"harder" can only be done by a few things

unborn flicker
#

hello?

fair rampart
#

@unborn flicker oh hei :D
i tried to add items to Sly's alt shop but even with something like this :

ItemChanger.ItemChanger.ChangeItems(Change, null, ItemChanger.Default.Shops.All);

it still removed all the default items :o

#

it's only happening on his shop, the others work :o

#

also is there a way to add new items to the bottom of the shop list instead of the top? :oc

unborn flicker
#

Thanks for bringing that to my attention. I will include a fix for that in the next major update for ItemChanger, which should occur around the end of next week.

fair rampart
#

Thanks :D!

fair rampart
vocal spire
#

Click on the variable tab and look for an variable in the int section with that name

fair rampart
vocal spire
#

The variable might be set on another state

#

Look in the states that come before that

fair rampart
#

you mean the nodes before?

vocal spire
#

States

copper nacelle
#

each node represents a state and its transitions

vocal spire
#

Oh I didn’t know we referred to them as nodes

copper nacelle
#

I mean you can refer to them as whatever

#

is my point

#

haven't heard anyone else call them nodes though

fair rampart
#

been through all of them, no actual number for cost

unborn flicker
fair rampart
#

@unborn flicker Thanks! :D
where did you find this list? :oc
and how do i change that value? is it with setint?

unborn flicker
#

The pins include a program for viewing assets. To change them, you need a language hook.

fair rampart
#

where are the pins? :s

#

oh wait i think i found them :'s

fair rampart
#

it has 2 modes

vocal spire
#

cool

fair rampart
#

Is there any way to find the region a given scene is in?
I'm trying to make it so the region map unlocks when you enter a new region but i don't want to sort the scenes into regions manually.

vocal spire
#

@fair rampart scenemanager probably

#

or have a list of all the scene names and what region they are in and check what the scene name's matching region is

fair rampart
#

Anyone know where the FSM for the Radiance light orbs is?

vocal spire
#

for summoning them?

fair rampart
#

No, for controlling their behaviour.

copper nacelle
#

on the orb

#

Orb Control

fair rampart
#

Where do I find the orb?

copper nacelle
#

Pretty sure it's pooled

vocal spire
copper nacelle
#

Can probably get a ref off a radiance fsm

fair rampart
#

And where do I find the pool?

vocal spire
#

look at what 56 said and my screenshot

fair rampart
#

3, 70?

vocal spire
#

no

#

get the reference from the fsm

#

preload radiance

#

get the fsm

#

get the state

#

get the action

#

get the gameobject

#

done

fair rampart
#

You mean get the reference from attack commands?

vocal spire
#

yes

fair rampart
#

Something like this: attackCommands.GetAction<SpawnObjectFromGlobalPool>("Spawn Fireball", 1).gameObject;?

vocal spire
#

yes

#

unless the .gameObject is a fsm owner, then you do .gameObject again

fair rampart
#

Do .gameObject again?

vocal spire
#

if GetAction<SpawnObjectFromGlobalPool>("Spawn Fireball", 1).gameObject returns a fsmownerdefault(or whatever the name is) then fsmownerdefault.gameObject should return the gameobject.

fair rampart
#

Is something like this correct then Log(radiantOrb);?

vocal spire
#

I don't think so

#

try using printscenehiearchytree on the gameobject

fair rampart
#

Like this: radiantOrb.PrintSceneHierarchyTree("FSM");?

vocal spire
#

no

#

without the string perameter

fair rampart
#

Can you not print FSMGameObjects?

vocal spire
#

idk

#

never used that one

fair rampart
#

So do I need to convert it to a game object?

vocal spire
#

wait it's not already a game object?

fair rampart
#

No.

vocal spire
#

add .value

#

or .Value

#

idk which one

#

should return a normal gameobject

fair rampart
#

Seems to have worked. So now I can just use the file generated to see everything I need to?

vocal spire
#

yes

fair rampart
#

Thanks.

vocal spire
#

np

pure nova
#

Hello. I kind of want to get into making mod, but even after checking pins I'm still a bit clueless. I've used Unity in the past for baby sized games and know a little C#. Where should I get started?

floral furnace
pure nova
#

Okay, thanks!

fair rampart
#

How does 56 in radiance.host present the logs in the game screen?

vocal spire
#

Look at the apidocs at the logging part

fair rampart
#

Thank you pal

#

Maybe I'm blind but where would ModdingApi.GlobalSettings.json be located?

floral furnace
#

in your save files

#

edit it with a text editor then change the logging to true

fair rampart
#

Found it, thank you (:

#

Quite impatient cause he explains it in the video as well

fair rampart
#

@vocal spire Ye i saw MapZone but couldn't find anything about Scenes being linked to maps in the code.
Guess i'll have to sort them manually :S

vocal spire
#

Ask grenade about the maps. They were able to add a white palace one

jolly oriole
#

can confirm, am grenade

vocal spire
#

lol

fair rampart
#

Might not bother, there's like 500 different screens to sort through :s

#

on second thought i'll just do the few main entrances and that'll be enough.. i think

jolly oriole
#

But to answer your question: yes, long answer when i'm on pc

fair rampart
#

who's question? :sc

jolly oriole
#

Yours

fair rampart
#

of the finding a scene's region? :oc

jolly oriole
#

Is there any way to find the region a given scene is in?
I'm trying to make it so the region map unlocks when you enter a new region but i don't want to sort the scenes into regions manually.

fair rampart
#

:D

vocal spire
#

Would it just be finding a child with the name of the scene in each child of the map?

#

Then getting the name of the parent?

fair rampart
#

Mod will unlock the map for the region the scene you're in
Tho i can use :
UnityEngine.SceneManagement.SceneManager.sceneLoaded += OnSceneLoaded;
to get the scene, finding what region of the map it's in is where i'm at
The ModHooks for scene change don't work.

vocal spire
#

Yeah

fair rampart
#

Where would you find child of the map? there's MapZone but that is an enum :oc

vocal spire
#

Just make a switch for the mapzone

#

I think the map stuff are children of the inventory go

fair rampart
#

i know but how would you get what region the scene is in :o

vocal spire
#

You could do it with the mapzone

fair rampart
#

how :O

vocal spire
#

Just have a switch to set the playerdata book for having the map for that zone to true

#

Gonna write code on my phone now

fair rampart
#

i know but you need to know what region the scene is in :O
and you only get the name of the scene from the event :o

vocal spire
#

Switch(mapzone)
Case (this area)
Playerdata.setboolinternal(map bool name for this area, true);
Break;

fair rampart
#

i know but you only get the scene name from the event, how would you get the scenedata with only the name? :oc

vocal spire
#

No

#

You

#

Get

#

MapZone

#

With scenemanager

#

GameObject.Find(“_SceneManager”).getcomponent<scenemanager>().mapzone

fair rampart
#

and that's the current mapzone? :oc

vocal spire
#

Yes

#

If you look in this screenshot I sent yesterday, it says GODS_GLORY and this room is in there. I did not change it

#

If you wanted to do it with child’s of the inventory, then(I think) you would get the map child of the inventory then for each child(these would be the maps), find each child of that child. If the scene name matches a child, take the parent(this should be a map again) and get the name of that parent

dark wigeon
vocal spire
#

Guess it doesn’t always have the correct mapzone

jolly oriole
#

1 sec and i have the thing you want @fair rampart

#
private IEnumerator MapCompleteRegion()
{
    yield return new WaitWhile(() => !GameObject.FindObjectOfType<GameMap>());

    string scene_name = "scene_name"; // Whichever scene the player just entered
    
    var gameMap = GameObject.FindObjectOfType<GameMap>();
    GameObject ret = null;
    ret = gameMap.areaAncientBasin.FindGameObjectInChildren(scene_name) ?? ret;
    ret = gameMap.areaCity.FindGameObjectInChildren(scene_name) ?? ret;
    ret = gameMap.areaCliffs.FindGameObjectInChildren(scene_name) ?? ret;
    ret = gameMap.areaCrossroads.FindGameObjectInChildren(scene_name) ?? ret;
    ret = gameMap.areaCrystalPeak.FindGameObjectInChildren(scene_name) ?? ret;
    ret = gameMap.areaDeepnest.FindGameObjectInChildren(scene_name) ?? ret;
    ret = gameMap.areaDirtmouth.FindGameObjectInChildren(scene_name) ?? ret;
    ret = gameMap.areaFogCanyon.FindGameObjectInChildren(scene_name) ?? ret;
    ret = gameMap.areaFungalWastes.FindGameObjectInChildren(scene_name) ?? ret;
    ret = gameMap.areaGreenpath.FindGameObjectInChildren(scene_name) ?? ret;
    ret = gameMap.areaKingdomsEdge.FindGameObjectInChildren(scene_name) ?? ret;
    ret = gameMap.areaQueensGardens.FindGameObjectInChildren(scene_name) ?? ret;
    ret = gameMap.areaRestingGrounds.FindGameObjectInChildren(scene_name) ?? ret;
    ret = gameMap.areaWaterways.FindGameObjectInChildren(scene_name) ?? ret;
    if (ret)
    {
        for (int i = 0; i < ret.transform.childCount; i++)
        {
            var go = ret.transform.GetChild(i);
            if (!PlayerData.instance.GetVariable<List<string>>(nameof(PlayerData.instance.scenesMapped)).Contains(go.name))
            {
                PlayerData.instance.GetVariable<List<string>>(nameof(PlayerData.instance.scenesMapped)).Add(go.name);
            }
        }
    }
}
copper nacelle
#

any ??=

jolly oriole
#

nah, at least i don't see them, don't know if you do tho

copper nacelle
fair rampart
#

What assembly is FindGameObjectInChildren in? because it can't find it :s

jolly oriole
#

idk if vasi has it included, but modcommon has it definetly

fair rampart
#

How do you use an IEnumerator function? :s

jolly oriole
#

idk if it's possible, didn't test it, but you should be able to call this function from the sceneloaded/activescenechanged hook (with the scene name as a parameter):

private void MapCompleteRegion(string scene_name)
{
    var gameMap = GameObject.FindObjectOfType<GameMap>();
    GameObject ret = null;
    ret = gameMap.areaAncientBasin.FindGameObjectInChildren(scene_name) ?? ret;
    ret = gameMap.areaCity.FindGameObjectInChildren(scene_name) ?? ret;
    ret = gameMap.areaCliffs.FindGameObjectInChildren(scene_name) ?? ret;
    ret = gameMap.areaCrossroads.FindGameObjectInChildren(scene_name) ?? ret;
    ret = gameMap.areaCrystalPeak.FindGameObjectInChildren(scene_name) ?? ret;
    ret = gameMap.areaDeepnest.FindGameObjectInChildren(scene_name) ?? ret;
    ret = gameMap.areaDirtmouth.FindGameObjectInChildren(scene_name) ?? ret;
    ret = gameMap.areaFogCanyon.FindGameObjectInChildren(scene_name) ?? ret;
    ret = gameMap.areaFungalWastes.FindGameObjectInChildren(scene_name) ?? ret;
    ret = gameMap.areaGreenpath.FindGameObjectInChildren(scene_name) ?? ret;
    ret = gameMap.areaKingdomsEdge.FindGameObjectInChildren(scene_name) ?? ret;
    ret = gameMap.areaQueensGardens.FindGameObjectInChildren(scene_name) ?? ret;
    ret = gameMap.areaRestingGrounds.FindGameObjectInChildren(scene_name) ?? ret;
    ret = gameMap.areaWaterways.FindGameObjectInChildren(scene_name) ?? ret;
    if (ret)
    {
        for (int i = 0; i < ret.transform.childCount; i++)
        {
            var go = ret.transform.GetChild(i);
            if (!PlayerData.instance.GetVariable<List<string>>(nameof(PlayerData.instance.scenesMapped)).Contains(go.name))
            {
                PlayerData.instance.GetVariable<List<string>>(nameof(PlayerData.instance.scenesMapped)).Add(go.name);
            }
        }
    }
}
#

but if you need to use the IEnumator (maybe the gamemap is null or something), you can do that with

GameManager.instance.StartCoroutine(IEnumerator_Function());
fair rampart
vocal spire
#

Why do you need a new GameObject

#

Also why does it need non bouncer

jolly oriole
#

other way

private void MapCompleteRegion(string scene_name)
{
    var gameMapGo = GameManager.instance.gameMap;
    var mapRegionGo = gameMapGo.FindGameObjectInChildren(scene_name).transform.parent.gameObject;
    for (int i = 0; i < mapRegionGo.transform.childCount; i++)
    {
        var go = mapRegionGo.transform.GetChild(i);
        if (!PlayerData.instance.GetVariable<List<string>>(nameof(PlayerData.instance.scenesMapped)).Contains(go.name))
        {
            PlayerData.instance.GetVariable<List<string>>(nameof(PlayerData.instance.scenesMapped)).Add(go.name);
        }
    }
}
fair rampart
#

PlayerData.instance.mapZone seems to also return the current mapzone, tho it's not always correct, like
City of Tears --- OUTSKIRTS --- Ruins2_10b
turns into COLOSSEUM

fair rampart
#

GameManager.instance.GetCurrentMapZone() does the same as the mapzone in playerdata, strange

#

Is there anyway to Update the Map like you would when you sit on a bench? Like draw in mapped scenes?

adding to PlayerData.instance.scenesMapped doesn't update the map ui and PlayerData.instance.UpdateGameMap() doesn't do anything :s

vocal spire
#

Does the Playerdata have the map for the area you are trying to update?

jolly oriole
#

no, but the activescenechanged hook has

vocal spire
#

Oh I meant does this have the map bought from conifer?

fair rampart
#

there's the scene name and activescenechanged give 2 scene objects, guessing they are the screen before and the current screen, tho they don't seem to have any map object attached to them

#

oh yeah they do that

#

PlayerData.instance.mapDeepnest

vocal spire
#

Can you set that to true?

fair rampart
#

yeah tho that'll unlock the map, it won't fill it in with new areas until you sit at a bench, i want to make it fill automatically without needing a bench

vocal spire
#

Oh

#

Look at what happens in HeroController when you sit at a bench

#

It’s probably there

#

Just call it yourself

jolly oriole
#

there's a method for that, but i'm playing games rn, can't look which

vocal spire
#

I need to be doing band practice rn so I can’t either

fair rampart
#

what kind of band? :3c
heavy metal? :Dc

vocal spire
#

Middle school elective band

fair rampart
#

ah, electronic heavy metal! :D

vocal spire
#

Nah

#

I have no idea what genera we play

#

All we have is our region music rn. Haven’t played anything as a band this year yet

fair rampart
#

play beat it by Michael jackson :D

jolly oriole
#

with the method i gave, replace scenesMapped with scenesVisited and afterwards call GameManager.UpdateGameMap()

pure nova
#

What's the best way to get access to the vannila dll? I only currently have the modded dll and don't know a good way to get the original.

young walrus
#

verify game files thru steam

#

or gog

pure nova
#

Before that I should make backups of the modded stuff, correct?

young walrus
#

what modded stuff

pure nova
#

The dll and the mod folder. Although I guess ModInstaller might make it so I don't have to do that.

young walrus
#

you just open the installer again if you want them back

pure nova
#

Yeah I thought so, just had to make sure. Thanks!

fair rampart
#

@jolly oriole ye that doesn't work

jolly oriole
#

damn

fair rampart
#

GameMap.SetupMap(); Seems to work :>

jolly oriole
#

oh yeah, perfect would be:

private void MapCompleteRegion(string scene_name)
{
    var gameMapGo = GameManager.instance.gameMap;
    var mapRegionGo = gameMapGo.FindGameObjectInChildren(scene_name).transform.parent.gameObject;
    for (int i = 0; i < mapRegionGo.transform.childCount; i++)
    {
        var go = mapRegionGo.transform.GetChild(i);
        if (!PlayerData.instance.GetVariable<List<string>>(nameof(PlayerData.instance.scenesVisited)).Contains(go.name))
        {
            PlayerData.instance.GetVariable<List<string>>(nameof(PlayerData.instance.scenesVisited)).Add(go.name);
        }
    }
    GameManager.instance.UpdateGameMap();
    GameManager.instance.gameMap.GetComponent<GameMap>().SetupMap();
}
fair rampart
#

UpdateGameMap still doesn't seem to do anything tho :oc

jolly oriole
#

it copies entries from scenesVisited to scenesMapped

fair rampart
#

is there anyway to find the source of the GetPlayerBoolHook calls?

vocal spire
#

like what called them?

copper nacelle
#

you could create a stack frame

fair rampart
#

sounds expensive, need to know when corny's menu checks if you have bought a map from him, currently have a timestamp that is checked when the menu opens but it's not ideal

vocal spire
#

in the fsm maybe

fair rampart
#

dunno how i'd check in those programmatically :s

vocal spire
#

oh it might be a ifplayerdatafalse component

#

what's a scene with conifer?

#

nevermind he has an fsm for destroying himself instead of ifplayerdatafalse

fair rampart
#

dunno the scene names :s

vocal spire
#

found one

#

Crossroads_33

fair rampart
#

Isn't gonna help tho, i need to know when it's calling stuff like "PlayerData.instance.mapCrossroads" :oc

vocal spire
#

I'm pretty sure it uses playerdatabooltest to get that

#

the name is just not there in fsmveiwer for some reason

#

something like ConiferGo.LocateMyFSM("Conversation Control").InsertMethod("Convo Choice", 1, () => Modding.Logger.Log("Conifer in crossroads map bool called");

#

Oh no I forgot the semicolon

#

there

#

GameObject.Find("Cornifer").LocateMyFSM("Conversation Control").InsertMethod("Convo Choice", 1, () => Modding.Logger.Log("Conifer in crossroads map bool called");

#

this will log every time it is about to check for you having the map

fair rampart
#

Thanks for the help! :D
i think i'm almost done, just need a bit more testing :>

sage holly
#

some day I'll learn to use that

vocal spire
#

Edit fsms?

sage holly
#

lemme refrase, some day I'll learn to do more than just sprites

vocal spire
#

Oh ok

#

Maybe just replacing sprites?

sage holly
#

I mean, learn a lot more, enough to be able to make mods on my own, or to attempt at making a game

#

but for a start, I could try and make an enemy to be modded in the game using that

vocal spire
#

To make a completely new enemy/boss, you just need to make an enemy in unity with a monobehavior

sage holly
#

is there a guide on that? also, do I need more than just unity?

vocal spire
#

in the api docs there is one

pure nova
#

Is the .mod and .vanilla just the two different versions (modded and vanilla)?

vocal spire
#

yes

pure nova
#

Okay thanks for confirming.

sage holly
#

ok thanks

kind ingot
#

just an idea for anyone interested: Maybe you could make a mod that makes Weaversong stronger or adds more charm combos, like Grimmchild Upgrades but for weaversong?

vocal spire
#

exaltation does that

#

I think

#

might only be hatchlings

kind ingot
#

i'll check

vocal spire
#

I'm working on some stuff rn so I cant

#

I know how to do it though

kind ingot
#

it doesn't

#

but thx for showing me exaltation tho, sounds cool

fair rampart
#

Does the Geo counter not get updated with UpdateGeo()?

vocal spire
#

are you running that on playerdata?

fair rampart
#

No.

vocal spire
#

HeroController.instance.UpdateGeo();

fair rampart
#

Actually, yes, then.

#

I thought you meant something else.

vocal spire
#

use what I sent

fair rampart
#

It does nothing.

vocal spire
#

it does?

fair rampart
#

Yes, I am.

vocal spire
#

oh idk

#

usually doing stuff in herocontroller works

fair rampart
#

The problem is, I can add Geo and see that number, but it doesn't update the Geo counter itself.

vocal spire
#

are you using HeroController.instance.AddGeo()?

fair rampart
#

Yes.

vocal spire
#

idk usually herocontroller updates counters

fair rampart
#

Is there an FSM for Geo UI?

vocal spire
#

idk

#

can't check rn

fair rampart
#

Can the first Radiance platform you spawn on top of be removed through code?

fast estuary
#

yes, you can destroy the gameobject

fair rampart
#

So, the one you spawn on top of is a Game Object as well?

fast estuary
#

yes, platforms are gameobjects

fair rampart
#

Is it best to always use PrintSceneHierarchyTree to find what you're looking for?

#

And how would I find the name of the initial platform?

#

Would PrintSceneHierarchyTree work on a scene?

vocal spire
#

Yes

#

I think it is just PrintSceneHiearchy though

fair rampart
#

I used UnityEngine.SceneManagement.SceneManager.GetActiveScene().PrintHierarchy();

#

Seems to work.

vocal spire
#

You can also use the ones in the pins

fair rampart
#

In the pins?

#

You mean GGScenes?

#

Seems pretty useful, thanks.

fast estuary
#

the one below

vocal spire
#

Yeah

#

Gg scenes is all the scenes in godhome

#

The one below is every other scene

#

If a scene isn’t in either of them, you should probably upload it after making one

fair rampart
#

I wanted the Absolute Radiance one for now.

#

If I have custom scenes, then UnityEngine.SceneManagement.SceneManager.GetActiveScene().PrintHierarchy(); would be best, right?

vocal spire
#

If you have custom scenes, then you already have the stuff that would print, right?

fair rampart
#

I guess.

#

Is there any easier way of figuring out the platform game object by the way? There are a lot of objects in the file.

vocal spire
#

Open the scene in hk edit or utiny ripper

fast estuary
#

I used to use slashhithook to just hit it with nail and log the name

vocal spire
#

Good idea

fast estuary
#

it's not great but it works well

fair rampart
#

Does HK Edit require Unity?

vocal spire
#

Yes

#

2017

fair rampart
#

I think I'm going to try slashithook first then.

vocal spire
#

How are you making custom scenes without unity?

fair rampart
#

I'm not yet.

vocal spire
#

Oh

fair rampart
#

I just don't want to download Unity right now.

vocal spire
#

Ok

fair rampart
#

Do I just log the gameobject I hit in the hook?

vocal spire
#

Log the name of it I think

fast estuary
#

yeah

#

could probably also do .toString or something

fair rampart
#

Should I use something like this platforms = GameObject.Find("TileMap Render Data"); and then DestroyAll?

vocal spire
#

GameObject.Destroy(the GameObject);

fair rampart
#

It works now, thanks.

vocal spire
#

Np

#

Radiance mod?

fair rampart
#

Something like that.

#

If it turns out the way I expect it to, I'll let you know.

#

I do have a slight problem though. While the platform is gone, there seem to be some decoration objects that have no collision checks.

vocal spire
#

Then you need to add some form of collider to them

fair rampart
#

I would like to destroy them, but I don't know which ones they are.

#

Any check for position instead I could use to get their names?

vocal spire
#

No

fast estuary
#

check them for a transform component and either log their position or filter based on that

vocal spire
#

But they need the name of the object

#

Not the position

fast estuary
#

log both name and position?

#

or fiter based on position and then log the name

fair rampart
#

Well, I tried deleting all arena prefabs and it works, but that also destroys the background.

#

I know the general position of the object.

vocal spire
#

So find out what the ones you shouldn’t delete are

fair rampart
#

There are quite a few.

vocal spire
#

Then only delete ones that are in a certain area

fair rampart
#

How do I do that?

vocal spire
#

Check if the x position is greater than a certain amount and less than a certain amount before destroying it

fair rampart
#

Something like this?

#

if (gameObject.transform.GetPositionX() < 60 && gameObject.transform.GetPositionX() > 50)
{
GameObject.Destroy(gameObject);
}

#

That would still destroy every gameObject as far as I'm aware.

fast estuary
#

yes

#

you could log their name and find out that way which ones you want to destroy

#

that would be the easiest way, log every game object in the location where the thing is you want to get rid of

fair rampart
#

if (platforms.transform.GetPositionX() < 60 && platforms.transform.GetPositionX() > 50)
{
Log(platforms);
}

#

Like this?

fast estuary
#

platforms is a gameobject?

#

probably Log(platforms.name); or Log(platforms.toString()); then

fair rampart
#

Is it possible to search for just any game object without a name?

#

So, any object within this position.

fast estuary
#

Object.FindObjectsOfType<GameObject>

#

should give you a list of every gameobject

fair rampart
#

Cannot convert method group.

#

I fixed it, I'll try now.

#

Is this correct GameObject[] platforms = Object.FindObjectsOfType<GameObject>();?

#

I found some of the objects, but there are still a few more I need to delete.

fair rampart
#

I found most of the objects, thanks for the help. Just one more question, how can I set an existing object to appear in the background instead of the foreground?

fast estuary
#

you can probably change the z position of whatever thing you have

fair rampart
#

I'll try that.

tawny onyx
fair rampart
#

would it be possible to make a mod that replaces hk ost with Dead Cells soundtrack?

#

and if so, could someone please make it?

jolly oriole
#

i think sid mickely was working on a general mod to replace music

bleak rivet
#

(I would totally help out with design work for modders on the occasion, but my current workload is already heavy)

tawny onyx
#

I gonna to write some toturial for apidocs, but i dont konw how to use Sphinx lol, hope Saleh doesn't mind

#

@ornate rivet

jolly oriole
#

Like modding, copy parts from other pages how you would like things to look and change the contents

tawny onyx
#

so, how to edit .rst files? using notepad++?

jolly oriole
#

any text editor should be enough

tawny onyx
#

sounds fine

#

i'll try

fair rampart
#

How would you change the hitbox for the Knight?

jolly oriole
#

change on of the BoxCollider2Ds that are on the knight

fair rampart
#

Oh, it's BoxCollider2D, not Collider2D?

jolly oriole
#

yes

fair rampart
#

Should I just do this _knight.GetComponent<BoxCollider2D>?

jolly oriole
#

if it works, go for it, although i'm not sure which of the BoxCollider2Ds (yes, there are multiple) is for damage hitbox

fair rampart
#

It works, but it's not the damage hitbox.

jolly oriole
#

you could always

foreach (var box in _knight.GetComponentsInChildren<BoxCollider2D>())
{
    box.offset; // whatever
    box.size; // whatever
}
fair rampart
#

Good idea.

#

It looks like it works, thanks.

#

Do you know if all objects use BoxCollider2Ds, or do some use regular Collider2Ds?

jolly oriole
#

some use boxcolliders, some edgecolliders, some circlecolliders, some those polycolliders (don't know the name tho)

fair rampart
#

Is there a way to see all the hitboxes in the game by the way?

jolly oriole
#

hitboxdraw, dont know how its named on the installer tho

fair rampart
#

Hitboxdraw is the name of a mod?

jolly oriole
#

possibly, might also be "show hitboxes"

fair rampart
#

That mod doesn't show all the hitboxes however.

eternal crown
#

Question!

I am messing around, trying to make mods, probing ground.

How to create custom items? Custom charms iirc replace original ones, but how to deal with items? Singletone? Add onload into inventory? Or edit scene to add object that gives item?

jolly oriole
#

depending on what kind of item you want, it can be rather easy

eternal crown
#

Just a key for now

jolly oriole
#

then you can use the ItemHelper class contained in the SFCore core mod, can give details later after school

fair rampart
#

Does changing the scale of an object also change the hitbox?

floral furnace
#

it does

fair rampart
#

And how do you change the scale?

#

I tried LocalScale but that didn't seem to work.

vocal spire
#

Oh so that’s why modifying the hotbox while trying to make CustomKnight+ was so buggy. I was only modifying one

#

Local scale should work

#

@eternal crown you can also add new charms

fair rampart
#

I've been trying to transform the scale of the Radiant Orbs I've been instantiating, but it has no effect.

vocal spire
#

Can you show your code?

fair rampart
#

radiantBullet.transform.localScale = new Vector3(0.5f, 0.5f);

vocal spire
#

Is the original scale of the object 1, 1, 1?

fair rampart
#

Original scale as shown in the logs is: Transform LocalScale: (1.4, 1.4, 1.0)

vocal spire
#

And this is to the object you are instantiating or the object that has been cloned?

fair rampart
#

The one that has been cloned.

vocal spire
#

Ok

#

Is it possible that it had an error before getting to this part?

fair rampart
#

No.

#

I'm running code after it just fine.

#

I can change the velocity for example.

vocal spire
#

Have you tried using transform.SetScale() ?

fair rampart
#

I've also changed the hitboxes.

#

You mean SetScaleMatching?

vocal spire
#

No

#

SetScaleX and Y I think

fair rampart
#

I'll try.

#

Doesn't work.

vocal spire
#

Hmm

floral furnace
#

weird, localScale shouldve worked

fair rampart
#

Perhaps there's something else changing their scale?

copper nacelle
#

Log the scale before and after

fair rampart
#

I was right, something else was changing it.

#

I got around it by doing a foreach for all of the Radiant Orbs and updating the scale after they had already spawned.

#

And I wanted to ask, is there any way of showing the hitboxes? The show hitbox mod doesn't show all of them.

copper nacelle
#

.AddComponent<ModCommon.DebugColliders>()

fair rampart
#

That shows the hitbox?

copper nacelle
#

yes

fair rampart
#

Thanks.

fair rampart
#

There's something weird going on with the hitboxes.

#

Sometimes the Knight gets hit from above or below by a bullet despite the fact that the hitboxes never collided. It doesn't seem to happen to the left or right.

#

Any ideas what could be causing this?

vocal spire
#

Maybe something in fsms?

fair rampart
#

Is there another non-BoxCollider2D hitbox I'm missing for the player?

#

FSMs might be it as well.

vocal spire
#

Is there any other collider in the PrintHiearchyTree?

fair rampart
#

I'll print it out now.

#

I see a lot of PolygonColliders as well, mostly for the attacks.

#

Is it possible to transform one type of collider into another?

#

Alright, so, I've confirmed that the Knight always gets hit from below, and not from any other direction (unless the hitboxes are actually colliding).

tawny onyx
fair rampart
#

Is it possible to only debug BoxCollider2Ds?

#

They seem to be the problem, not the other ones.

jolly oriole
#

pls somebody update this on the modinstaller, thanks

- Add static method for adding items
- Add FadeGroup integration for items
vocal spire
#

Is fadegroup like fading out when the menu is closed?

#

Ooooo method for adding items

jolly oriole
#

yes

vocal spire
#

That’s cool

jolly oriole
#

and those items are the already implemented "normal" items, like keys

vocal spire
#

Are you working on adding counted items?

jolly oriole
#

uh, i could start with those

vocal spire
#

Oh, I didn’t mean to make you do them if you don’t want

jolly oriole
#

nah, it's just that i didn't need them, but i'll implement those, as it should be a general ItemHelper, not just for uncounted, normal items

#

@eternal crown once SFCore on the installer is updated, you can do

public override void Initialize()
{
    /* Other Code Here */
    SFCore.ItemHelper.AddNormalItem("Just_Put_Some_Unique_Name_Here", (Sprite) null, "A_Custom_PlayerData_Bool_Goes_Here", "CONVO_NAME_HERE", "CONVO_DESCRIPTION_HERE");
    /* Other Code Here */
}

(obv you would need to add a reference to SFCore in your project)

eternal crown
#

That's it??

vocal spire
#

Have you already made something for adding more space to the inventory? If you haven’t, could I try?

#

Yes

jolly oriole
#

no, i haven't made something for more spaces

vocal spire
#

Ok

#

May I?

jolly oriole
#

yes

vocal spire
#

Yay

eternal crown
#

I expected... idk... more stuff? But you managed to fit in a almost single method

vocal spire
#

Will start after school

eternal crown
#

Bravo

jolly oriole
#

np

vocal spire
#

Used to be just new ItemHelper(all the parameters in the method)

#

But I like the method better

jolly oriole
#

yeah, i kept that just in case a mod used that

#

i can already tell which FSMs need edits to work with more space @vocal spire:

  • "FSM" FSM on each equipment GO ("Dash Cloak", "Rancid Egg", etc.)
  • "Equipment" GO - "Build Equipment List" FSM (possibly "only" more shifts)
  • "Inv" Go - "UI Inventory" FSM ("Equip Item XX" states needed, alongside of additional "Choice YY" states)
vocal spire
#

Oh I was thinking of adding a new panel since there isn’t much visual space left on that

#

I already sort of did it

#

But it still doesn’t work

jolly oriole
#

oh

#

well, that would work too

vocal spire
#

Maybe I’ll go all out and do both

#

Just an Easter egg for people who install a bunch of item adding mods

vocal spire
#

Gonna work on it now!

fair rampart
#

How do I hide the original sprite of the Knight?

vocal spire
#

Something with getcomponent tk2dsprite or tk2dspriteanimation or something

#

Or

#

Look at how custom knight does spritesheets and use a blank one

#

Ooo

#

I didn’t know environmentparticalhelper existed

jolly oriole
#

me neither

vocal spire
#

I wish this pc wasn’t slow

#

Also should I make it like charm helper where it gets more smushed for the more things you add or should I just go with a new panel

#

Why not do both. Smush it for 1 row then go into the extended inventory panel

#

Smushing it for 2 or more rows seems too compact

dark wigeon
#

I just installed linux again today and I was able to open up fsmview fine

#

I thought you guys said it didn't work

vocal spire
#

The difference between Linux and windows looks scary

dark wigeon
#

that's only wine without any additional styling, all the non .net stuff looks different

fair rampart
#

How would I make all the background objects darker? I need to so it's not the same color as the projectiles.

jolly oriole
#

multiply the SpriteRenderer's color with something like 0.75f

fair rampart
#

Does every object have a sprite renderer?

#

I couldn't see it in the components so I thought they didn't have it.

jolly oriole
#

if it's visible in game, it either has a spriterenderer or meshrenderer

fair rampart
#

Why does the log not show a renderer component then?

#

It definitely does not have a spriterenderer or meshrenderer.

#

Would it work if I add that as a component?

#

The objects I'm talking about are GG_Arena_Prefab by the way.

jolly oriole
#

you could always

foreach (var sr in ggArenaPrefab.GetComponentsInChildren<SpriteRenderer>())
{
    // Code
}
#

the children of GG_Arena_Prefab have spriterenderers (at least in GG_Ghost_Gorb_V)

fair rampart
#

In GG_Radiance, I don't see them, but I guess I can still try it.

#

Okay, it worked, thanks.

jolly oriole
#

but if it isn't neccessary to see the background, you could also use the mod BilndRadiance that i had uploaded here a while ago (sadly i nuked my messages in this server, so you can't find it), makes everything behind the blurplane black

fair rampart
#

Couldn't I also just destroy Arena Prefab?

#

I tried that and there was nothing left of the background.

#

But I think I'd rather just darken it.

#

Also, does changing the color have any effect on an object that is already completely black?

jolly oriole
#

no

#

except for the alpha part, which would make it more translucent

fair rampart
#

Any idea how I would change the color of one then?

fair rampart
#

Best way to remove particles from a projectile? Seems like they lag the game too much.

floral furnace
#

theres a particle controller component

#

you can probably just call it and like, call the Stop() method

fair rampart
#

I think it's actually the PlaymakerFSM itself that's lagging the game.

fair rampart
#

Is it possible to make a clone of an object that does not use any FSMs?

jolly oriole
#

Clone it and remove the fsms afterwards

fair rampart
#

What about making an entirely new object?

#

Seems like it would be less effort.

fair rampart
#

I think I should make my own object to avoid all these problems. How do I do that?

fair rampart
#

I think I've made a new one, but how do you set the sprites?

vocal spire
#

Just set the sprite of the new spriterenderer to the sprite of the original

fair rampart
#

What about a tk2dsprite?

vocal spire
#

Same I think

#

Just set all of the values to the values of the original

fair rampart
#

Meshrenderer as well?

vocal spire
#

Idk

#

Haven’t used those

#

Probably

fair rampart
#

The original had these: --Component: MeshFilter
--Component: MeshRenderer
--Component: tk2dSprite
--Component: tk2dSpriteAnimator
--Component: CircleCollider2D

#

So just copy all of them?

vocal spire
#

I think it would be easier for you to instantiate the original then remove the PlaymakerFSM component/s

fair rampart
#

I can't figure out why the original is lagging.

#

Making a new one seems like a lot less trouble.

vocal spire
#

Modlog?

fair rampart
#

The ModLog doesn't really tell me anything.

vocal spire
#

Ok

#

Just removing the fsms seems easier

fair rampart
#

So far this is the code I'm using for a new object: radiantBullet = new GameObject("radiantOrb"); CircleCollider2D radiantBulletCollider = radiantBullet.AddComponent<CircleCollider2D>(); radiantBulletCollider.radius = 0.2f; SpriteRenderer radiantBulletSprite = radiantBullet.AddComponent<SpriteRenderer>(); radiantBulletSprite.sprite =

vocal spire
#

If they are the cause

fair rampart
#

I'm not sure if they are.

vocal spire
#

Wait, can’t we just look at how the child of light mod instantiates those?

fair rampart
#

Same way, but I have way more objects than that mod.

#

Can't do it like that without lagging.

vocal spire
#

Then try removing the fsms

fair rampart
#

I did, and I'm not sure what I'm missing.

vocal spire
#

Hmm

fair rampart
#

Is this fine : radiantBullet = new GameObject("radiantOrb"); CircleCollider2D radiantBulletCollider = radiantBullet.AddComponent<CircleCollider2D>(); radiantBulletCollider.radius = 0.2f; tk2dSprite radiantBulletSprite = radiantBullet.AddComponent<tk2dSprite>(); radiantBulletSprite = _attackCommands.GetAction<SpawnObjectFromGlobalPool>("Spawn Fireball", 1).gameObject.Value.GetComponent<tk2dSprite>(); tk2dSpriteAnimator radiantBulletAnimation = radiantBullet.AddComponent<tk2dSpriteAnimator>(); radiantBulletAnimation = _attackCommands.GetAction<SpawnObjectFromGlobalPool>("Spawn Fireball", 1).gameObject.Value.GetComponent<tk2dSpriteAnimator>(); MeshRenderer radiantBulletMeshRender = radiantBullet.AddComponent<MeshRenderer>(); radiantBulletMeshRender = _attackCommands.GetAction<SpawnObjectFromGlobalPool>("Spawn Fireball", 1).gameObject.Value.GetComponent<MeshRenderer>(); MeshFilter radiantBulletMeshFilter = radiantBullet.AddComponent<MeshFilter>(); radiantBulletMeshFilter = _attackCommands.GetAction<SpawnObjectFromGlobalPool>("Spawn Fireball", 1).gameObject.Value.GetComponent<MeshFilter>();

#

Because I can't see the sprite.

#

Is there something I'm missing?

vocal spire
#

Why are you setting the local variables?

fair rampart
#

Ah, perhaps that's the problem?

vocal spire
#

Yes

#

You aren’t doing anything with the added components

#

You set an new local variable to them, then set the variable to something else immediately afterwards

fair rampart
#

Yes, I was trying to rush it a bit and overlooked that, I'll try it now thanks.

#

And how do I set a tk2dsprite now?

#

I can't just do .sprite.

vocal spire
#

.collection I think

fair rampart
#

radiantBullet.GetComponent<tk2dSprite>().Collection = _attackCommands.GetAction<SpawnObjectFromGlobalPool>("Spawn Fireball", 1).gameObject.Value.GetComponent<tk2dSprite>().Collection;

#

Like this?

#

Uh, it works, "kind of".

#

And by that I mean instead of firing the orbs, it fires Radiance herself.

vocal spire
#

You need to play the proper animation

#

I suggest doing a foreach in the tk2dspriteanimator.Library.clips then log the clip’s name(I don’t remember it exactly. I know I was able to do it with HeroController a while ago)

fair rampart
#

I can't just make it equal the original tk2dspriteanimator?

vocal spire
#

Try it

#

I don’t think it works like that

fair rampart
#

radiantBullet.GetComponent<tk2dSpriteAnimator>().Library.clips = _attackCommands.GetAction<SpawnObjectFromGlobalPool>("Spawn Fireball", 1).gameObject.Value.GetComponent<tk2dSpriteAnimator>().Library.clips;

#

This is wrong, right?

vocal spire
#

Not what I meant but not wrong

#

You should probably set the library though

fair rampart
#

I get a null reference.

vocal spire
#

Oh

#

Wait

#

Have you already added an tk2dSpriteAnimator to your go?

fair rampart
#

I added a component.

vocal spire
#

Before you use getcomponent?

fair rampart
#

radiantBullet.AddComponent<tk2dSpriteAnimator>();
radiantBullet.GetComponent<tk2dSpriteAnimator>().Library.clips = _attackCommands.GetAction<SpawnObjectFromGlobalPool>("Spawn Fireball", 1).gameObject.Value.GetComponent<tk2dSpriteAnimator>().Library.clips;

vocal spire
#

Oh ok

#

Try setting the library

fair rampart
#

What do you mean by setting the library?

vocal spire
#

Don’t do the clips

fair rampart
#

Okay.

#

Nope, still spawns Radiance.

fair rampart
#

Hm, if I used sprite renderer instead, could I use a custom image (png etc...)?

vocal spire
#

You would have to make the animations your self

#

Also you didn’t do what I said

#

You need to play the proper animation
@vocal spire

fair rampart
#

foreach for what type of object?

#

I don't know what the clips are.

vocal spire
#

Tk2dSpriteAnimationClip

#

Or something

fair rampart
#

Okay, so after I log this, how do I set the specific clip?

vocal spire
#

You look through the log until you find something that looks like it would be the name of the orb animation

fair rampart
#

No, I mean, how do I then set it to that clip.

vocal spire
#

radiantBullet.GetComponent<tk2dSpriteAnimator>().Play(name)

#

I think

fair rampart
#

Okay, I'll try.

vocal spire
#

Might be tk2dsprite

#

Oh wait let me check something so I can confirm it

#

Yes it is tk2dSpriteAnimator that you use Play on

fair rampart
#

Trying it now.

#

It works.

#

But, it might also be the reason why it lagged before. Seems like the animation could be the cause of it.

#

In any case, thanks for the help.

#

Actually, no, I set KinematicBody to false and now it doesn't lag anymore. It's fixed.

#

Creating my own object was the solution after all.

jolly oriole
#

i like function headers

public static void AddOneTwoBothItem(string uniqueName, Sprite sprite1, Sprite sprite2, Sprite spriteBoth, string playerdataBool1, string playerdataBool2, string nameConvo1, string nameConvo2, string nameConvoBoth, string descConvo1, string descConvo2, string descConvoBoth)
{}
vocal spire
#

How fun

floral furnace
#

structs would probably clean that up

jolly oriole
#

on my end, it would clean that up, on the end of the developer using that, it would be worse

floral furnace
#

ohhh i thought that was yours

jolly oriole
#

well, kinda

#

part of SFCore, to be used by others (including myself)

#

btw @vocal spire counted items should work, haven't tested them, but they should work

vocal spire
#

Awesome

jolly oriole
#

well, that sucks

#

can't test it

#

already have 16 items lol

vocal spire
#

lol

#

If only I would have finished that inventory expander

minor sierra
#

For what?

vocal spire
#

For more inventory space

jolly oriole
#

just tested it (dragged ToT out), and i have a nullreference somewhere

vocal spire
#

Oof

jolly oriole
#

well, of course i don't get the correct things when i don't copy the correct state

vocal spire
#

lol

#

I once tried removing an action from a state that didn’t exist in that fsm

minor sierra
#

lol and you screwed up the entire code right?

#

or was the code still stable/usable?

jolly oriole
#

if you mean me, everything was still usable, just that the item didn't show up

vocal spire
#

For me it was just changing what fsm I was editing in one line of code

minor sierra
#

ok.. so it was visual for one and a f**kup for another..

jolly oriole
vocal spire
#

Yay

minor sierra
#

Anyone, the mod you created is utilizing the core and the charms while the added menu/inventory boosts the main game, right?

jolly oriole
#

Anyone, the mod you created is utilizing the core and the charms while the added menu/inventory boosts the main game, right?
the thing i linked is a library mod (or core mod) that other mods can use for custom content (like items, charms & achievements), implemented in a way that allows multiple mods to do that simultaneously

minor sierra
#

ok so it's more to help the multiplayer then a solo player right??

vocal spire
#

?

jolly oriole
#

no, it's for developers

vocal spire
#

If the developer uses it thought, the mod requires whatever mods the developer used to be installed

#

Gonna go play among us now while I wait for my next class to start

#

If I am needed ping me

jolly oriole
#

just remember: red sus

vocal spire
#

But red is in my name

#

Agreed though

#

Oh no it won’t let me join games now

#

Bad network connection :(

#

Life has no meaning without good network connection

sage holly
#

laughs in no internet at home

vocal spire
#

Oof

#

Why isn’t it working? Discord is fine. It’s just among us

sage holly
#

no, literally no internet at home

#

I'm taking advantage of my university's free internet

vocal spire
#

Oh

vocal spire
#

Has Uuwuu been updated on the installer yet?

jolly oriole
#

was last changed on 04.07.2020

leaden cedar
#

Hehy

#

heyy

vocal spire
#

Ok so how should I update it?

jolly oriole
#

ask someone who can do it

vocal spire
#

K

#

Should I ping?

jolly oriole
#

or dm

vocal spire
#

K

jolly jungle
#

So. How would one go about modding a boss?

jolly oriole
jolly jungle
#

Oh ok thanks

#

Out of curiosity is your nickname related to red's or is that just a coincidence

jolly oriole
#

i had mine first, then came @flat forum and redfrog joined after that

vocal spire
#

Yea

#

lol

minor sierra
#

Anyone why do you ping everyone??

vocal spire
#

lol

fast estuary
#

it seems like it should stop by setting the fsmbool in the dreamer cutscene but it doesn't

jolly oriole
#

looks like a bit of the healing particles

fast estuary
#

yeah, it just has the healing animation forever

#

should have probably said that or made a gif, I thought it would be easier to recognize on the image

jolly oriole
#

might be possible by stopping a tk2d animation on a Lines Anim gameobject (it is the child name) and set the meshrenderer of the same gameobject to inactive

minor sierra
#

oh now i get it the animation stays but the character isn't focusing (small crouch animation)

fair rampart
#

Jo does anybody have the pale King or pure Vissel skin i saw them on yt but cant find a download link anywhere

vocal spire
#

@fair rampart it’s a removed challenge skin. Can no longer get it

#

Oh you asked in all modding channels....

fair rampart
#

😂 didnt know that some skins are that hard to obtain goddam i just want a cool skin

fair rampart
#

Hello everyone, I want to make my first hollowknight mod. I have 6 months of experiiance with C# programing language, but I have no idea on how to start making mods and where there is nothing on yt so can you guys help me gwt staryed

young walrus
arctic thunder
#

would it be possible for the Wayward Compass to be made toggleable in the RandoMapMod?

vocal spire
#

program it yourself

#

anyone else hate when you make code for a boss but then things you didn't even program in happen and everything is dying a couple months later when you try to make the mod better?

floral furnace
#

Anyone knows how to get the dialogue keys for each line in the game? because im not planning on manually talking to everyone and logging it one by one just so i can change them

dark wigeon
#

EN_xxx textassets in resources.assets?

floral furnace
#

extremely late to say this but thanks, will check that

jolly oriole
#

even later, but i think somebody actually put all the different dialogue stuff in one file, but i have to search that again

#

can't find it

#

let me quickly create a zip for you with (what i think) important text assets

floral furnace
#

thnx again

jolly oriole
#

just seeing this, where in the game is a giraffe corpse?

<entry name="GIRAFFE_CORPSE">...Please... Not food...</entry>
vocal spire
#

What

jolly oriole
#

going through the text assets

knotty monolith
#

Willohs meal?

fast estuary
#

yeah

#

that's the corpse at willohs meal

jolly oriole
#

oh

vocal spire
#

lol

jolly oriole
#

EN_Dreamers has an interesting structure

#
<entry name="DREAMERS_EC1_4">Let us sleep little shadow.&lt;br&gt;Return to your darkness.&lt;br&gt;Allow us our peace.</entry>
<entry name="To live forever in an unchanging world... Death, I would fear less."></entry>

don't know how i should interpret that

floral furnace
#

yeah definitely willoh

sage holly
#

that's the corpse at the side of willoh's fungi

#

the one holding a wanderer's journal or something

jolly oriole
#

yeah, already realised that

full pebble
#

Hey I wanted to start nodding hollow knight, by chance can any of you give me pointers on how to do that?

jolly oriole
full pebble
#

Thanks, man

fast estuary
#

do you guys have any idea about how to get the pre lifeblood dive invuln again? can't find anything related to that so I'm kinda lost

#

so basically for chaining dives again

blissful burrow
#

Probably

fast estuary
#

I saw that earlier and thought it was something else because it was called parry invuln

#

but that works

#

thank you

nimble lake
#

wow the docapi seems bigger than last time i've checked

jolly oriole
#

when was the last time?

jolly oriole
nimble lake
#

when was the last time?
i don't know

jolly oriole
copper nacelle
#

requiring non-free software

jolly oriole
#

oh damn, where?

copper nacelle
#

bro they're all unlicensed

jolly oriole
#

bro, adding a license is too much work tho

copper nacelle
empty kraken
#

wait

#

wrong chat my bad

vocal spire
#

lol

fair rampart
sage holly
#

is this a suggest or a threat?

fair rampart
#

no it's something I'm making

#

this is what I got so far

jolly oriole
#

if you take suggestions, make the masks (top left) have one glowing eyehole

silent oak
#

Oh god.

fair rampart
#

y e s

fair rampart
sage holly
#

cool

knotty monolith
#

Nice

#

This is probably too much work for a meme, and don't take this as a request unless you wanna, but I think little pink slippers would be adorable

marble hollow
#

are you going to do spells?

sage holly
#

blaster soul

#

botton text

fair rampart
#

are you going to do spells?
@marble hollow probably, although they'll be simple changes like adding blue eyes to the faces in abyss shriek and maybe I'll turn shade soul into a giant bone

marble hollow
#

ah aight

fair rampart
velvet loom
#

Anyone from the Pale Court team here?

sage holly
#

yes

#

me

velvet loom
#

I saw someone comment this on the teaser trailer and given the last charm shown I figured there might be some merit to it.

Is the black wyrm a part of this somehow?

sage holly
#

nope

#

I would tease a bit and play around, but I better confirm it now

#

no, there's not gona be a blackwyrm boss fight

velvet loom
#

Understandable, I guess the last charm is basically like, Ghost's own thing?

vocal spire
#

Is that the black charm?

#

If so, the ability was shown a while ago if you wish to look back far enough

sage holly
#

I would suggest no

vocal spire
#

Yeah

velvet loom
#

Yeah, at one point in the trailer it shows a bunch of charms, and since all the Knights are mostly white it doesn't match up

sage holly
#

it will be displayed in the release trailer

#

when you get to try them, you'll go "oooh"

vocal spire
#

Cool

velvet loom
#

Alright. Well last question and no, you don't have to give me a serious answer. Memes are acceptable

#

Do you think this mod will come out before Silksong?

vocal spire
#

Probably

sage holly
#

very likely yeah

velvet loom
#

Because I've been in a few modding communities and in some cases when the next game comes out development will either slow down or stop completely.

vocal spire
#

I haven’t seen anything about Silksong in a while. May have missed something tho

sage holly
#

I can confirm that in the offshoot chance of silksong comming out tomorrow, I'll focus completely in finishing it first

#

the game, not the mod

vocal spire
#

lol

sage holly
#

but then again, most of the work left to do is not in my departament

velvet loom
#

What's your department?

sage holly
#

art

vocal spire
#

programming intensifies

sage holly
#

more specifically, all animations

vocal spire
#

Mebi’s art is awesome

sage holly
#

and some other extra sprites and helping with making the scenes/arenas

velvet loom
#

Wait this mod is adding new areas?

sage holly
#

nope

vocal spire
#

You can

#

Oh read it wrong

sage holly
#

not in the soul sanctum or city of tears sense at least

vocal spire
#

Thought it said”you can add areas in mods?”

sage holly
#

yes, you can

vocal spire
#

I’m tired

velvet loom
#

Wait so are the knights replacing bosses?

sage holly
#

it does not necesarily means we'll do that

vocal spire
#

No

#

A d d

#

Not replace

#

Also not replacing charms

velvet loom
#

I know but if you're not replacing bosses, but not adding new areas how would you fight them?

sage holly
#

think of the hidden dreams update

vocal spire
#

I think mebi means they are expanding pre existing areas

velvet loom
#

Ooh...So like, you dream nail their corpses and then fight them?

vocal spire
#

Also yes I think

sage holly
#

well, yes

#

dunno if this counts as spoiler, but most new bosses have always being in dreams

vocal spire
#

White defender?

sage holly
#

a dream yeah

velvet loom
#

Yeah isn't he already a dream boss?

vocal spire
#

K

#

Yeah

sage holly
#

ah that

#

it's already a boss yes

#

you shall wait 'til release to see if we do anything to him

vocal spire
#

Dun dun dun

velvet loom
#

That sounds like 'we're already doing something with him, but I can't say'

vocal spire
#

Probably

#

No more spoilers

sage holly
#

yeah sure totally not just building up hype

vocal spire
#

lol

#

Idk why I’m so tired and having so much trouble typing

#

I mean, this is hours before I normally sleep. Maybe it was just being in in person school

sage holly
#

you're just tired, can happen

vocal spire
#

K

dark wigeon
#

sseadv has been updated and now supports all 3 unity versions from hk beta to current release hk

vocal spire
#

Cool

tawny onyx
#

cool

#

i have a question about how to get Hornet sprites by sseadv? i open GG_Hornet_2.unity[447],but the list of sprite collections showes nothing

dark wigeon
#

unity only puts the sprites in the first scene that uses it

#

check [105]

#

I could make it search for all sprites in the scene but that would make it take a bit longer to load

edgy walrus
#

has anyone made a mod that acts like a dlc?

jolly oriole
#

Depends on how you define dlc

edgy walrus
#

well, since the game was made in unity, what if we made a qoute on qoute "OFFICIAL DLC"

#

like the grimm troupe, adding more content than changing the content thats already there

jolly oriole
#

oh, then there are a few mods in the works

edgy walrus
#

my question is, can you MAKE dlc for hollow knight in unity

jolly oriole
#

definetly, pretty much everything is possible with modding

edgy walrus
#

ok, good to know

sage holly
#

the days to zotenest are coming closer and closer

brittle palm
#

Hey guys, how can you mod Hollow Knight?

young walrus
#

?i

autumn shardBOT
shadow dagger
#

hey guys this is probably an odd question for yall, but how would I get into modding for hollow knight?
Im completely new to modding any games and I was thinking that since it was made in Unity and is a 2D game, it would be a great learning experience ...
Does anyone have any videos, guides, etc. on how to get into modding in general and all that? sorry for such a loaded question, but any post I found online pointed me towards the hollow knight discord

young walrus
#

and looking at the source code of existing mods

shadow dagger
#

okay ty! :)

young walrus
#

they were asking how to make them

#

not install them

quiet crest
#

ooooh my bad

fair rampart
#

Why does the player's hitbox not stay centered on the Knight if they are in the air?

vocal spire
#

Idk

#

Team cherry

fair rampart
#

I've been trying to have it stay in the same position and it just keeps getting offset.

vocal spire
#

Maybe an fsm thing or something in the HeroController class

fair rampart
#

I'll look into it, but this might be another case where it's just better to write my own collision code.

#

Okay, so, I couldn't figure it out. Instead of using Collider2Ds I did this: float distance = Vector3.Distance(transform.position, knight.transform.position); if (distance <= 0.2f) { knight.GetComponent<HeroController>().TakeDamage(null, GlobalEnums.CollisionSide.right, 1, 0); }

#

By the way, is this code more performant than using Collider2Ds?

#

It seems to work very well.

#

What does hazard type do by the way?

jolly oriole
#
public enum HazardType
{
    NON_HAZARD,
    SPIKES,
    ACID,
    LAVA,
    PIT
}
fair rampart
#

0 is non hazard then?

jolly oriole
#

yes

fair rampart
#

What kind of an effect does it have.

jolly oriole
#

just knockback + invul frames

fair rampart
#

Best one to use for projectiles then?

jolly oriole
#

yes

fair rampart
#

Does the collision side matter much for projectiles?

jolly oriole
#

idk

fair rampart
#

I think that normally the Collider2Ds detect the collision side for you?

#

I guess I can experiment with it if necessary.

safe hamlet
jolly oriole
#

no

tawny onyx
#
public enum HazardType
{
    NON_HAZARD,
    SPIKES,
    ACID,
    LAVA,
    PIT
}

LAVA?

flat forum
#

yeah

#

I think the property was given to acid

#

yeah it is

#

spikes are ACID

#

enemies are SPIKES

#

not sure what pit refers to, tho

#

and NON_HAZARD is obvious

floral furnace
#

lava is probably left over when forest of bones was still in the game was it not

flat forum
#

yeah

#

acid currently behaves the way lava used to behave

tawny onyx
#

I could make it search for all sprites in the scene but that would make it take a bit longer to load
@dark wigeon should make it. and also make a search InputField on top of scenes list (just like FSMViewer)

floral furnace
#

lava was probably intended to do double damage to you or something, or at least allow it to seperate once you get isma's

flat forum
#

how are you, ttacco

floral furnace
#

pretty h

flat forum
#

why so

floral furnace
#

means ok

flat forum
#

oh

#

thought ya mean :ech:

jolly oriole
#

from my testing, spikes are spikes, acid is acid, lava and pit are both unused (when i tested pit, i also fell right through the collider)

tawny onyx
#

lava is just logging but pit seems do something

jolly oriole
#

hm, maybe i accidentally had lava or something

#

testing was way back

flat forum
#

the info I gave is from angle

#

he tested them mid-2018

quiet crest
#

Talking about the Chrystal aspid. Think we can get something like this running?

jolly oriole
quiet crest
#

Yep

#

The one from the 10th layer of hell, not the 7th

vocal spire
#

Why not

fair rampart
#

How do I add particles from one game object to another? Do I need ParticleSystem, ParticleSystemRenderer or both?

copper nacelle
#

You need both but adding the former gives the latter anyways

fair rampart
#

But how do I add them from another object?

#

GetComponent<ParticleSystem>(). and then what?

quiet crest
#

wait....are guys going to actually make this now?

fair rampart
#

Make what?

jolly oriole
#

projectile =/= particle

quiet crest
#

Make what?
@fair rampart an even more cursed aspid than the chrystal aspid

fair rampart
#

No, I mean how do I copy one particle system to another.

quiet crest
#

ohhh lol my bad

floral furnace
#

try instantiating the other particle system?

fair rampart
#

Can you also make your own particles without any sprites?

jolly oriole
#

without any sprites
i mean, something has to be the particle

fair rampart
#

Well, I don't know how it is in Unity, but I've used Godot in the past, and there the particles have a default square sprite if you don't provide one.

jolly oriole
#

just get the texture of any gameobject you want the sprite as particles

slender merlin
#

Um, sorry for interrupting, but, how to mod the Hollow Knight? I just wanted to create a little Charms mod, for my friends.

jolly oriole
#

little Charms mod
depending on what you want to do that is possibly not little

jolly oriole
fair rampart
#

If I do radiantBullet.AddComponent<ParticleSystem>();, do the particles have some default properties or do I need to set everything myself?

jolly oriole
#

default ones, but idk what they are, possible the same ones when adding a particlesystem to a gameobject in the unity editor

fair rampart
#

Yeah, seems so.

#

And they do have a default sprite, a purple box.

#

Obviously I want to change that however.

#

So where do you set the texture?

copper nacelle
#

On their material

dark wigeon
#

ParticleSystemRenderer material?

fair rampart
#

Okay, I've figured out how to copy the exact same values from an already existing Particle System to my new one. Just one question, do I need to edit all the values one by one or is there another way?

flat forum
#

hey, on making new rooms

#

how would one go about with adding particles?

#

I managed to take and edit an already existing set from an in-game room into what I wanted

#

but no clue on an entirely new room

jolly oriole
#

which particles?

#

bg/fg ones? the ones produced when walking? ...

#

well, i'm back in like an hour or so

jolly jungle
#

I'm tinkering with CustomKnight rn

#

And I just wanted to know

#

Does the mod/game recognise only png files?

#

as in, can I have multiple files with the same name but different file types, and the game will ignore anything not png type?

fair rampart
#

Anyone have any ideas how I can find only the non default values for the original particles system? I've tried PrintSceneHierarchyTree but it only shows me --Component: ParticleSystem
--Component: ParticleSystemRenderer

copper nacelle
#

Just log them

#

There are fields on the psr modules

#

could just reflect over it ig