The Witcher 3

File information

Last updated

Original upload

Created by

Jamezo97

Uploaded by

Jamezo97

Virus scan

Safe to use

About this mod

Spawn as many companions as you want!
Companions spawn throughout the world once you've finished the game. Ask them to follow you!

Requirements
Permissions and credits
What is this?
I got a bit of post-game depression, as all the main characters from the story line had disappeared from the world.
So I looked for a companion mod, and found one here, however it didn't work with the latest version.
Having some experience with programming, I updated the mod to working status again, improved a few things, and uploaded it here
But being the procrastinator I am, I decided to keep working on it, and so here we are, with version 2.1.0. 3.0.0!

But wait, 'What does it do?' you may ask.

Simply, it allows you to have followers, AKA 'companions', who help you in battle. These can be almost anything in the game, from Ciri, to Yen, to a drowner or a bear You can have (almost) whoever you want, and however many of them you want!





What's so special about this mod?
This is more than just a console command mod.
  • Unlimited companions. Spawn as many as you want, and whoever you want. The only limit is your computing power
  • Non-immersion breaking NPC spawning. Upon finishing the main quest line, the main characters will appear throughout the world as if they'd never left. You can find them at Dandelions Cabaret, Corvo Bianco, Kaer Morhen, Vizima and Oxenfurt!
  • Custom Dialogue scenes. Ciri, Triss, Yennefer and Shani all have custom dialogue options. Triss and Yennefer also have romance scenes, if you romanced them in the main story line.
  • Ciri can use her special abilities: blink and dash.
  • Triss and Yennefer can summon meteorites. Make sure to jump out of the way!
  • Ciri, Yennefer and Cerys can all ride horses. I can't seem to get any of the men to ride horses. They immediately jump off and I haven't got a damn clue as to why. Incredibly frustrating!
  • ALL companions can ride in boats. Up to 20 in one boat! A bit unrealistic sure... But it makes a good picture. 
  • Have a friendly duel with Ciri. Find a nice field, and then challenge Ciri to a fight!


How it Works:
Any time throughout the game, you can enter a command (below) or open the menu to spawn a new companion.
Once you've finished the game (and other prerequisites) certain NPCs will spawn throughout the world, depending on the decisions you made.

There are two types of companions (NPCs), special, and... err... non-special.
Special companions will spawn around the world. You can interact with them, and they will follow you.
Special companions will ONLY SPAWN in the world, once you've completed the main quest line. You can't have multiple special companions of the same type, i.e. 2 special Ciri's. (You can however have many different types, i.e. 1 Ciri and 1 Yennefer)

If there's a bug and they're not spawning, try
DisableCompanionSpawning(0)
  AND/OR
ForceCompanionSpawning(1)
This will make sure you've enabled NPC spawning, and will force the mod to ignore if you have/haven't finished the game and just spawn them anyway.
If that doesn't work, see troubleshooting below.

Non-special NPC's must be spawned in from the command line. You can spawn as many as you wish, of whatever type, with the only restriction being your computing power. You can have multiple non-special NPCs with the same type.
Want 10 Yennefers teleporting around and smiting Gryphons out of the sky? You got it.

Special NPC's have their dialogues overridden. Ciri Triss, Yen and Shani all have custom dialogues. The rest do not, and they will merely acknowledge you when you interact with them.

Non-Special NPC's, for the most part, use their default dialogue lines (except for the few that TP you to another location for the dialog cutscene. I've overridden them manually)


Spawned NPCs are set to your current level. However some disregard this and are still terrible fighters.
So the damage dealt by NPC's is incremented by your level*12. This makes them not too powerful, but also no longer useless.
I haven't tested all the NPC's but this should work well.

Spawned NPCs are also set to their default appearances. So no more yen having vomit on her.

In Game Menu:
As of v3.0.0 there is now an in game menu which can be opened up using the Z key.
For this to work you need to modify the input.settings file. Instructions are contained within the mod zip file, or the attached read-me here.



You can use WASD keys to move around the menu. The E key selects something, the A key goes back a menu.
To change number fields, scroll down to the field using the S key, then select it with the E key, and use the A/D keys to modify the value.

It should be pretty easy to use. I hope anyway :)

See the installation instructions below for instructions on how to setup the menu key bindings.


Commands:
SpawnCompanion(nam : name, optional count : int, optional mortal : bool, optional level : int, optional appearance : name)
- The main function. Spawns 'count' companions (or just 1 if the parameter is not provided) at your current location.
Will change their appearance if the parameter is given
- EXAMPLE: SpawnCompanion(ciri)
Spawns ciri at your location
EXAMPLE: SpawnCompanion(triss, 2)
Spawns 2 Triss' at your location
EXAMPLE: SpawnCompanion(ciri, 1, 1, 23, __q505_hooded)
Spawns a level 23 mortal Ciri at your location, with a hood on.

CallCompanion(optional nam : name, optional count: int)
- Calls up to 'count' companions with the given name 'nam' to your location
EXAMPLE: CallCompanion()
Calls one companion
EXAMPLE: CallCompanion(triss)
Calls Triss to your location
- EXAMPLE: CallCompanion(, 4)
Calls up to 4 companions to your location (algorithm prefers companions further away)

CallAllCompanions()
- Calls all companions to your location
- EXAMPLE: CallAllCompanions()

RemoveSpecialCompanions()
- It removes all of the 'special' Companions. Companions spawned using the 'SpawnCompanion' command are NOT removed.
- EXAMPLE: ResetCompanions()

RemoveAllCompanions(optional includeSpecial : bool)
- Removes all companions from the world. Does NOT remove 'special' Companions, unless specified
- EXAMPLE: RemoveAllCompanions()
Removes only companions spawned using 'SpawnCompanion' command (i.e. not special ones)
- EXAMPLE: RemoveAllCompanions(1)
Removes ALL companions, both special and non-special

RemoveCompanion(nam : name, optional count : int)
- Removes up to 'count' companions. Will remove normal companions first, then special companions.
- EXAMPLE: RemoveCompanion()
Removes the closest non-special companion
- EXAMPLE: RemoveCompanion(ciri, 2)
Removes the 2 closest non-special ciri companions
EXAMPLE: RemoveCompanion(triss, 3)
Removes the 3 closest triss companions
EXAMPLE: RemoveCompanion(all, 3)
Removes the 3 closest companions

SpawnSpecialCompanion(nam : name, optional mortal : bool, optional level : int, optional appearance : name)
- Spawns in a special companion with the given name, mortality, level and appearance. These companions you can ask to follow you. Only some companions work, mostly just the main NPC's. Ciri Triss and Yen will occasionally say some one-liners or have a conversation. The rest are silent.
EXAMPLE: SpawnSpecialCompanion(zoltan)
Spawns Zoltan, if he's not already spawned. Upon talking to him he will start/stop following you.
EXAMPLE: SpawnSpecialCompanion(yen, 1, 10, yennefer_hooded)
Spawns a mortal level 10 Yennefer with a hood.

DisableCompanionTalking(disable : bool)
- Disables/Enables companion's abilities to talk, and say one-liners.
- EXAMPLE: DisableCompanionTalking(1)
Disables companions from talking

DisableCompanionSpawning(disable : bool)
- Disables/Enables companions from automatically spawning in the world once you've finished the main quest line.
- EXAMPLE: DisableCompanionSpawning(1)
Disables auto companion spawning

ForceCompanionSpawning(force : bool)
- Forcibly make companions spawn in the world, even if you haven't finished the main quest line.
- EXAMPLE: ForceCompanionSpawning(1)
Forces companions to spawn at Dandelions Cabaret

spawn2(nam : name, optional count : int, optional level : int, optional appearance : name)
- A helper function I made. Does the same thing as the vanilla 'spawn' command, but gives you the choice of setting the entities level, as well as it's appearance.
- EXAMPLE: spawn2(drowner, 1, 50)
Spawns a level 50 drowner
- EXAMPLE: spawn2(drowner, 40, 500)
Spawns your death.
- EXAMPLE: spawn2(triss, 1, 900, triss_tortured_bloody_face)
Spawns a badass Triss.

==================================================================

Obviously requires the Debug Console to be enabled.


Conflicts:
This mod modifies npc.ws and 
r4Player.ws . As such, you may get mod conflicts if you don't use a script merger.

Installing:
The easiest way to install this mod is to use the Nexus Mod Manager.
If you can't/won't do that, then navigate to your Witcher 3 installation directory, and open up the .zip archive you just downloaded. 
Then,
  • copy the folder 'modSpawnCompanions' to 'The Witcher 3/mods'
  • copy the folder 'DLCmod_spawn_companions' to 'The Witcher 3/DLC'
And that's it!

For v.3.0.0 menu keybindings:
If you want to use the in game menu for spawning companions, then you'll need to setup the keybindings.
Open the file "C:\Users\{USER}\Documents\The Witcher 3\input.settings"
and the file ""....\The Witcher 3\mods\modSpawnCompanions\input.settings.readme.txt""

Follow the instructions.

Uninstalling:
If you've completed the game and NPC's are auto spawning, then upon removing the mod the NPCs will remain in the world.
In order to fix this, you must perform the following steps before uninstalling the mod:
Execute:
DisableCompanionSpawning(1)
This will stop companions from automatically spawning in the world.
Then, travel to every place that you've spawned companions in, i.e. Velen/Novigrad, Skellige, White Orchard, Vizima, KaerMorhen and Toussaint
And in each place, execute the command
RemoveAllCompanions(1)
This will remove all companions from the world, including special ones. You must physically be in each of the above listed locations, in order to remove companions that are in that location.

Once you've done this, you can uninstall the mod, and no NPCs should remain.
If you ever decide to reinstall this mod, make sure you execute the command: 'DisableCompanionSpawning(0)' to re-enable automatic companion spawning. The flag is stored as a fact in the save game, and will remain even after the mod is uninstalled.

Troubleshooting:
If you're having issues getting the mod to work, then first:
  1. This mod only works for v 1.31 of the game!
  2. This mod modifies two commonly modified files, r4player.ws and npc.ws. If you're getting errors about MCM or SCM functions not being found, then do a script merge!
Still got issues? First make sure you've installed the mod correctly. The folder structure should be
"%PathToWitcherGame%/The Witcher 3/mods/modSpawnCompanions/content/scripts/game/SpawnCompanions.ws" (among other .ws files)
"%PathToWitcherGame%/The Witcher 3/DLC/DLCmod_spawn_companions/content/blob0.bundle" (among other files)

If that is all correct, and you're getting script compilation errors, then do a script merge.

Ensuring the folder structure is correct, and ensuring you've merged the scripts correctly, should fix 99% of all issues.

If you get a script compilation error which mentions something along the lines of 'CEntityTemplate' is already defined, then find and delete the file

"%PathToWitcherGame%/The Witcher 3/mods/modSpawnCompanions/content/scripts/game/SCMImported.ws"

That should fix that problem.

Any other problems will probably need to be solved on a case by case basic. If I think of any simple fixes then I'll add them here.


Spawnable Names:
Below is a list of all of the NPC's you can spawn and have as your companion.
Some are useless, and will simply follow you around. Some will cower during a fight (I'm working on it!!) Others are glitched.
As of v2.4.0, I automatically add a sword to every NPC's inventory. This seems to fix some NPC's and make them fight things. I've also added the ability to each NPC which ensures that they're not afraid of monsters. So everyone should attack monsters now, instead of just dancing around them doing nothing... :)

As of v3.0.0 this list is kind of redundant, as you can now spawn nearly any entity you can possible think of using the menu. Like seriously, there's about 5000 of them now. Go nuts.

Most NPC's are CASE SENSITIVE. Some names I have 'corrected' in code, so that, i.e. 'ciri'='Ciri'='cirilla'='Cirilla'.
But in most cases, especially for the monsters and uncommon NPCs, I have not done this.


Common NPCs:
ciri
yennefer
triss
vesemir
lambert
eskel
letho
keira_metz
philippa_eilhart
fringilla_vigo
sheala_de_tancarville
dandelion
zoltan_chivay
priscilla
edna_var_attre
rosa_var_attre
vernon_roche
ves
crach
cerys
hjalmar
lady_bran
avallach
baron
emhyr
dijkstra
king_beggar
segeant
olgierd

Some DLC NPCs:
shani
iris
olgierd
mirror_man
anna_henrietta
regis
syanna
dettlaff
guillaume
palmerin
vivienne
gaetan
lynx_rock_witch
salma


Some Random Encounter NPCs:
inq_1h_mace_t1
inq_1h_mace_t2
inq_1h_sword_t2
inq_2h_sword
inq_crossbow
nml_1h_axe_bandit
nml_1h_club_bandit
nml_1h_mace_bandit
nml_2h_axe_bandits
nml_bow_bandit
nov_1h_club
nov_1h_mace_t1
nov_1h_sword_t1
nov_1h_sword_t2
nov_bandit_crossbow
nov_beggar_gang_hostile
nov_cleaver_gang_hostile
nov_dijkstra_gang_hostile
nov_whoresons_gang_hostile
npc_armor_lvl1
npc_armor_lvl2
npc_armor_lvl3
npc_armor_lvl4
npc_armor_lvl5
npc_armor_lvl6_wild_hunt
red_1h_sword
red_1h_sword_elite
red_2h_halberd
red_2h_halberd_elite
red_2h_sword_elite
red_crossbow
red_crossbow_elite
red_crossbow_turret_elite
red_shield_mace
red_shield_mace_elite
red_shield_sword_elite
ske_1h_axe_t1
ske_1h_club
ske_2h_axe_t2
ske_2h_spear
ske_2h_spear_t2
ske_bow
ske_shield_axe_t1
ske_shield_axe_t2
ske_tui_1h_axe_t2
ske_tui_2h_spear
ske_tui_shield_sword
wlh_2h_axe
wlh_2h_halberd
wlh_2h_hammer
wlh_2h_spear
wlh_2h_sword



Uncommon NPCs:
canaris
cirilla_young
cyprian_willey
eredin
imlerith
mousesack
radovid
uma
voorhis
witch_brewess
witch_weavess
witch_whispess
witch_brewess_beauty
witch_weavess_beauty
witch_whispess_beauty
ambassador_var_attre
anabelle
arnvald
bandit_grenn
bard_drogodar
bart_the_troll
borys_the_troll
carduin
chamberlain_emhyr
coroner_psycho
coroner_psycho_incognito
coroner_psycho_incognito_vampire
djinn
donar_an_hindar
dreamer_corine_tilly
druid_yolar
dudu_biberveldt
dwarf_bashful
dwarf_doc
dwarf_grumpy
dwarf_sleepy
dwarf_sneezy
elihal
eunuch_happen
felicia_cori
fergus_graem
fugas
geels
godling_johnny
graden
graham
guslar
halbjorn
hallgrim
hallgrim_beserker
hattori
hemmelfart
hjort
holger
ida_emean_aep_sivney
inkeeper_elza
irina_renarde
jonas_mattsson
jorun
karl_varese
lugos_the_glaucous
lugos_the_mad
luiza_la_valette
marabella
margarita
marquise_serenity
master_alchemist_gremista
master_blacksmith
menge
molly
mr_mirror
nathanel_priest
ojkm_gatekeeper
olivier
otrygg_an_hindar
philippa_owl
prologue_smith
prologue_village_herbalist
steingrim
stjepan_innkeeper
svanrige
talar
tamara
udalryk
vernossiel
vespula
vimme_vivaldi
von_gratz
whistling_wendy

Wild Hunt:
wildhunt_sword
wild_hunt_axe
wild_hunt_halberd
wild_hunt_hammer
wild_hunt_minion
wild_hunt_spear
wild_hunt_sword
wildhunt_axe
wildhunt_halberd
wildhunt_hammer
wildhunt_minion
wildhunt_spear


Humansie Wumansies
fists
fists_medium
fists_hard
shield
shield_axe
shield_mace
shield_hard
hammer2h
hammer2h_hard
axe2h
halberd2h
spear2h
bow
bow_hard
sword1h
sword1h_easy
sword1h_hard
sword1h_super_hard
axe1h
axe1h_hard
club1h
club1h_hard
1hand
1handed
sword2h
shortsword_hard
bowman
bowman_hard
xbow
rider
shovel_test
pitchfork

Monsters:
_quest__bear_grizzly_honey
_quest__endriaga_spiral
_quest__fogling
_quest__godling
_quest__him
_quest__miscreant
_quest__miscreant_greater
_quest__noonwright_pesta
_quest__werewolf
_quest__witch_1
_quest__witch_2
_quest__witch_3
alghoul
alghoul_lvl1
alghoul_lvl2
alghoul_lvl3
alghoul_mh
arachas
arachas_armored
arachas_lvl1
arachas_lvl2__armored
arachas_lvl3__poison
arachas_mh__poison
arachas_poison
armoredarachas
baronswife
basilisk
basilisk_lvl1
bear
bear_berserker
bear_berserker_lvl1
bear_black
bear_grizzly
bear_lvl1__black
bear_lvl2__grizzly
bear_lvl3__white
bear_white
bees
bies
bies_lvl1
bies_lvl2
bies_mh
black_mage_lvl1
black_troll
blacktroll
blood_flies
botchling
burnedman_lvl1
cave_troll
cavetroll
cockatrice
cockatrice_lvl1
cockatrice_mh
cyclop
cyclop_lvl1
cyclops
czart
czart_lvl1
czart_mh
dao
ddead
djinn
drowned_dead
drowneddead
drowner
drowner_lvl1
drowner_lvl2
drowner_lvl3
drowner_lvl4__dead
ekima
ekimma
elemental_dao_lvl1
elemental_dao_lvl2
elemental_dao_lvl3__ice
elemental_dao_mh
endrega
endriaga
endriaga_lvl1__worker
endriaga_lvl2__tailed
endriaga_lvl3__spikey
endriaga_spikey
endriaga_tailed
endriaga_worker
erynia
evil_dog
fogling
fogling_lvl1
fogling_lvl1__doppelganger
fogling_lvl2
fogling_lvl3__willowisp
fogling_mh
forktail
forktail_lvl1
forktail_lvl2
forktail_mh
frozen_soldier
fugas
fugas_lvl1
fugas_lvl2
gargoyle
gargoyle_lvl1
ghoul
ghoul_lesser
ghoul_lvl1
ghoul_lvl2
ghoul_lvl3
golem
golem_lvl1
golem_lvl2
golem_lvl2__ifryt
golem_lvl3
gravehag
gravehag_barons_wife
griffon
grizzly
gryphon
gryphon_lvl1
gryphon_lvl2
gryphon_lvl3__volcanic
gryphon_mh__volcanic
hag_grave__mh
hag_grave_lvl1
hag_grave_lvl1__barons_wife
hag_water_lvl1
hag_water_lvl2
hag_water_mh
harpy
harpy_lvl1
harpy_lvl2
harpy_lvl3__erynia
heart
him
ice_giant
ice_golem
icegiant
ifrit
ifryt
iris
katakan
katakan_large
katakanlarge
lamia
leshen
leshy
lessog
lessog_lvl1
lessog_lvl2__ancient
lessog_mh
lessun
leszy
lycan
lycanthrope
miscreant
nekker
nekker_lvl1
nekker_lvl2
nekker_lvl3__warrior
nekker_mh__warrior
nekker_warrior
nightwraith
nightwraith_lvl1
nightwraith_lvl1__doppelganger
nightwraith_mh
noonwraith
noonwraith_lvl1
noonwraith_lvl1__doppelganger
noonwraith_mh
pesta
poisonarachas
poisonedarachas
rotfiend
rotfiend_large
rotfiend_lvl1
rotfiend_lvl2
simulacrum
siren
siren_lvl1
siren_lvl2__lamia
siren_mh__lamia
succubus
troll
troll_black
troll_cave_lvl1
troll_cave_lvl2
troll_cave_lvl3__ice
troll_cave_mh__black
vampire_ekima_lvl1
vampire_ekima_mh
vampire_katakan_lvl1
vampire_katakan_mh
volcanic_gryphon
warewolf
waterhag
werewolf
werewolf_lvl1
werewolf_lvl2
werewolf_lvl3__lycan
werewolf_lvl4__lycan
wight
wild_dog
wild_dog_lvl1
wildhunt_mage
wildhunt_minion_lvl1
wildhunt_minion_lvl2
wildhunt_minion_mh
willo_wisp
willowisp
wolf
wolf_alpha
wolf_lvl1
wolf_lvl1__summon
wolf_lvl1__summon_were
wolf_lvl2__alpha
wolf_white
wolf_white_lvl2
wolf_white_lvl3__alpha
wraith
wraith_lvl1
wraith_mh
wyvern
wyvern_lvl1
wyvern_lvl2
wyvern_mh


Hope you enjoy the mod :)