Hi keyavain. again thanks for your greats creations !
I noticed you're also very good with creating new Perk. Would you help me please ? I'm looking to make a new Perk like "Charismatic" or something like that... but if I'm not a total noob, it's beyond my poor skills... A Perk who could make the character liked by everyone in the squad and raising their Morale permanently. I'd like to have that cause I'm bored to see some mercs such as Mouse, who is good as medic but also to become a perfect sniper. But she likes no ones but dislikes Fox, who is almost an essential mercs so her Morale his always low... and it's just an example among others...
you are welcome. As for the perk, while I am not an expert by any means - also trying to learn how Ja3 works/not works :) , and cannot promise anything, I will check if I can give you some pointers.
Ok, so did some quick checks, but again, sorry if this is not a complete solution. For a perk, I've found only a MoraleChange Event.
From the Lua code, there is the GetPersonalMorale function that gives hints as to how morale is handled: PlaceObj('ClassMethodDef', { 'name', "GetPersonalMorale", 'code', function (self) local teamMorale = self.team and self.team.morale or 0 --modifiers to personal morale for each merc local personalMorale = 0 --reduce morale for at least one disliked merc in team local isDisliking = false for _, dislikedMerc in ipairs(self.Dislikes) do local dislikedIndex = table.find(self.team.units, "session_id", dislikedMerc) if dislikedIndex and not self.team.units[dislikedIndex]:IsDead() then personalMorale = personalMorale - 1 isDisliking = true break end end --increase morale for no disliked and at least one liked merc if not isDisliking then for _, likedMerc in ipairs(self.Likes) do local likedIndex = table.find(self.team.units, "session_id", likedMerc) if likedIndex and not self.team.units[likedIndex]:IsDead() then personalMorale = personalMorale + 1 break end end end --lower morale if below 50% or 3+ wounds (REVERT for psycho perk) local isWounded = false local idx = self:HasStatusEffect("Wounded") if idx and self.StatusEffects[idx].stacks >= 3 then isWounded = true end if self.HitPoints < MulDivRound(self.MaxHitPoints, 50, 100) or isWounded then if HasPerk(self, "Psycho") then personalMorale = personalMorale + 1 else personalMorale = personalMorale - 1 end end --lower morale if liked merc has died recently for _, likedMerc in ipairs(self.Likes) do local ud = gv_UnitData[likedMerc] if ud and ud.HireStatus == "Dead" then local deathDay = ud.HiredUntil if deathDay + 7 * const.Scale.day > Game.CampaignTime then personalMorale = personalMorale - 1 break end end end --lower morale if claustrophobic or zoophobic perk is active if self:HasStatusEffect("ZoophobiaChecked") then personalMorale = personalMorale - 1 end if self:HasStatusEffect("ClaustrophobiaChecked") then personalMorale = personalMorale - 1 end --lower morale if friendly fire if self:HasStatusEffect("FriendlyFire") then personalMorale = personalMorale - 1 end --lower/increase if proud/guilty effect is on if self:HasStatusEffect("Conscience_Guilty") then personalMorale = personalMorale - 1 end if self:HasStatusEffect("Conscience_Sinful") then personalMorale = personalMorale - 2 end if self:HasStatusEffect("Conscience_Proud") then personalMorale = personalMorale + 1 end if self:HasStatusEffect("Conscience_Righteous") then personalMorale = personalMorale + 2 end
So you could think about somehow utilizing this part: local isDisliking = false for _, dislikedMerc in ipairs(self.Dislikes) do local dislikedIndex = table.find(self.team.units, "session_id", dislikedMerc) if dislikedIndex and not self.team.units[dislikedIndex]:IsDead() then personalMorale = personalMorale - 1 isDisliking = true break end end
or just straight modify the team morale with the help of code like local teamMorale = self.team and self.team.morale or 0
Hope I could at least somewhat help. Wish you a successful Perk creation! ;)
Greetings again keyavain. Again I couldn't resist to change your Model by one other more sexier as shown in the screenshot I joined ;-) Hope you don't mind...
Again this is not from me. This come this time from a mod only on Steam Workshop called "IMP +5 Girls and Uncle". You'll see I didn't do any miracle. Maybe just keeping the medical saddlebags ?
12 comments
again thanks for your greats creations !
I noticed you're also very good with creating new Perk. Would you help me please ?
I'm looking to make a new Perk like "Charismatic" or something like that... but if I'm not a total noob, it's beyond my poor skills...
A Perk who could make the character liked by everyone in the squad and raising their Morale permanently.
I'd like to have that cause I'm bored to see some mercs such as Mouse, who is good as medic but also to become a perfect sniper. But she likes no ones but dislikes Fox, who is almost an essential mercs so her Morale his always low... and it's just an example among others...
Can you help me ?
you are welcome.
As for the perk, while I am not an expert by any means - also trying to learn how Ja3 works/not works :) , and cannot promise anything, I will check if I can give you some pointers.
For a perk, I've found only a MoraleChange Event.
From the Lua code, there is the GetPersonalMorale function that gives hints as to how morale is handled:
PlaceObj('ClassMethodDef', {
'name', "GetPersonalMorale",
'code', function (self)
local teamMorale = self.team and self.team.morale or 0
--modifiers to personal morale for each merc
local personalMorale = 0
--reduce morale for at least one disliked merc in team
local isDisliking = false
for _, dislikedMerc in ipairs(self.Dislikes) do
local dislikedIndex = table.find(self.team.units, "session_id", dislikedMerc)
if dislikedIndex and not self.team.units[dislikedIndex]:IsDead() then
personalMorale = personalMorale - 1
isDisliking = true
break
end
end
--increase morale for no disliked and at least one liked merc
if not isDisliking then
for _, likedMerc in ipairs(self.Likes) do
local likedIndex = table.find(self.team.units, "session_id", likedMerc)
if likedIndex and not self.team.units[likedIndex]:IsDead() then
personalMorale = personalMorale + 1
break
end
end
end
--lower morale if below 50% or 3+ wounds (REVERT for psycho perk)
local isWounded = false
local idx = self:HasStatusEffect("Wounded")
if idx and self.StatusEffects[idx].stacks >= 3 then
isWounded = true
end
if self.HitPoints < MulDivRound(self.MaxHitPoints, 50, 100) or isWounded then
if HasPerk(self, "Psycho") then
personalMorale = personalMorale + 1
else
personalMorale = personalMorale - 1
end
end
--lower morale if liked merc has died recently
for _, likedMerc in ipairs(self.Likes) do
local ud = gv_UnitData[likedMerc]
if ud and ud.HireStatus == "Dead" then
local deathDay = ud.HiredUntil
if deathDay + 7 * const.Scale.day > Game.CampaignTime then
personalMorale = personalMorale - 1
break
end
end
end
--lower morale if claustrophobic or zoophobic perk is active
if self:HasStatusEffect("ZoophobiaChecked") then
personalMorale = personalMorale - 1
end
if self:HasStatusEffect("ClaustrophobiaChecked") then
personalMorale = personalMorale - 1
end
--lower morale if friendly fire
if self:HasStatusEffect("FriendlyFire") then
personalMorale = personalMorale - 1
end
--lower/increase if proud/guilty effect is on
if self:HasStatusEffect("Conscience_Guilty") then
personalMorale = personalMorale - 1
end
if self:HasStatusEffect("Conscience_Sinful") then
personalMorale = personalMorale - 2
end
if self:HasStatusEffect("Conscience_Proud") then
personalMorale = personalMorale + 1
end
if self:HasStatusEffect("Conscience_Righteous") then
personalMorale = personalMorale + 2
end
return Clamp(personalMorale + teamMorale, -3, 3)
end,
}),
So you could think about somehow utilizing this part:
local isDisliking = false
for _, dislikedMerc in ipairs(self.Dislikes) do
local dislikedIndex = table.find(self.team.units, "session_id", dislikedMerc)
if dislikedIndex and not self.team.units[dislikedIndex]:IsDead() then
personalMorale = personalMorale - 1
isDisliking = true
break
end
end
or just straight modify the team morale with the help of code like
local teamMorale = self.team and self.team.morale or 0
Hope I could at least somewhat help.
Wish you a successful Perk creation! ;)
Again I couldn't resist to change your Model by one other more sexier as shown in the screenshot I joined ;-)
Hope you don't mind...
By the way can check my other message please ?
You'll see I didn't do any miracle. Maybe just keeping the medical saddlebags ?