Jump to content
Fenris_Wolf

Profession Framework Mod

Recommended Posts

Just uploaded it to workshop.

Unfortunately I had to remove the examples.zip, because Steam doesn't alllow any compressed files within the mod.

 

No changenotes as of yet (because it's v1.0).

Link to the Workshop page

 

(Hope everything is fine @Fenris_Wolf, if not just hit me with the changes that I should do)

Share this post


Link to post
Share on other sites

A little late to this party... but I just tried this mod today.... Brilliant !!!!

 

it's great to be able to associate custom gear with pre-installed attachments to professions...

 

 

As usual, great stuff!

Share this post


Link to post
Share on other sites

Ok,

 

So I inserted the lines to re-name weapon as per your (chef) example...

 

So far a renamed pistol has worked great!!  But applying this to an SKS, worked only initially.... a reload via 'Stripper clip', reverted  the name back...  At least I think that is what caused it to revert.

 

 

 

Share this post


Link to post
Share on other sites
1 hour ago, Arsenal26 said:

But applying this to an SKS, worked only initially.... a reload via 'Stripper clip', reverted  the name back...  At least I think that is what caused it to revert.

Stripper clip wouldn't cause that..I but renaming firearms really doesnt work so well...due to the way attachments go on..it decides if a attachment fits by reading the display name...and occasionally ORGM replaces a gun with a new copy (copying all attachments and condition, but not name), but that usually only happens after ORGM gets updated.

I'm not sure what would have caused it in this case, but the renaming of firearms this way is not advised.

Share this post


Link to post
Share on other sites
21 minutes ago, Fenris_Wolf said:

Stripper clip wouldn't cause that..I but renaming firearms really doesnt work so well...due to the way attachments go on..it decides if a attachment fits by reading the display name...and occasionally ORGM replaces a gun with a new copy (copying all attachments and condition, but not name), but that usually only happens after ORGM gets updated.

I'm not sure what would have caused it in this case, but the renaming of firearms this way is not advised.

 

K.... so no "Bin Laden's - Gold plated AK-47"

 

 

Share this post


Link to post
Share on other sites

1.1-beta uploaded to github (build 41 compatible)

 

  • added spawn key to profession tables, for custom spawn locations.

  • added clothing key to profession tables, for adding/editting character creation clothing options.

  • added SundayDriver2, SpeedDemon2, and BaseballPlayer2 as profession traits.

  • fixed trait key removeInMP being overwritten by requiresSleepEnabled

  • fixed trait key requiresSleepEnabled applying wrong value

  • Refactored functions in the client file into the main ProfessionFramework table.

  • Rewrote and expanded internal documentation in LDoc syntax

  • Included HTML documentation for the API in the docs folder.

Share this post


Link to post
Share on other sites
1 minute ago, Dr_Cox1911 said:

Should I push this new version to Steam? Or should I wait till you lift it out of the beta status?

Lets wait for now, I still need to do more testing and had a few features i wanted to implement, plus more updated examples and touchups on the documentation.

Just didn't want to hold back the github version since the clothing features for custom profession outfits are handy ^_^

Share this post


Link to post
Share on other sites

Noticed this awhile back, not sure if I mentioned it...

 

Adding SpeedDemon to a New Profession does not remove it from the available traits list... So you'll have it, but it will then be possible to pick it again, and have it twice ?

Share this post


Link to post
Share on other sites
12 hours ago, Arsenal26 said:

Noticed this awhile back, not sure if I mentioned it... 

 

Adding SpeedDemon to a New Profession does not remove it from the available traits list... So you'll have it, but it will then be possible to pick it again, and have it twice ?

Make sure you're adding SpeedDemon2 not SpeedDemon, since that's the profession version of the trait.

SpeedDemon2 was missing from earlier versions (added into the beta) and should be mutually exclusive with the regular version

Share this post


Link to post
Share on other sites
8 hours ago, Fenris_Wolf said:

Make sure you're adding SpeedDemon2 not SpeedDemon, since that's the profession version of the trait.

SpeedDemon2 was missing from earlier versions (added into the beta) and should be mutually exclusive with the regular version

 

Roger that, Thanks!

 

Share this post


Link to post
Share on other sites

FYI... getting this error after 41.17

 

 

 


LOG  : General, 1572290333327> STACK TRACE
LOG  : General, 1572290333337> -----------------------------------------
LOG  : General, 1572290333347> Callframe at: setMutualExclusive
LOG  : General, 1572290333356> function: doTraits -- file: 2ProfessionFramework.lua line # 165
ERROR: General, 1572290333367> java.lang.reflect.InvocationTargetException
ERROR: General, 1572290333377>     at sun.reflect.GeneratedMethodAccessor44.invoke(Unknown Source)
ERROR: General, 1572290333387>     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
ERROR: General, 1572290333397>     at java.lang.reflect.Method.invoke(Method.java:498)
ERROR: General, 1572290333407>     at se.krka.kahlua.integration.expose.caller.MethodCaller.call(MethodCaller.java:61)
ERROR: General, 1572290333418>     at se.krka.kahlua.integration.expose.LuaJavaInvoker.call(LuaJavaInvoker.java:198)
ERROR: General, 1572290333428>     at se.krka.kahlua.integration.expose.LuaJavaInvoker.call(LuaJavaInvoker.java:188)
ERROR: General, 1572290333438>     at se.krka.kahlua.vm.KahluaThread.callJava(KahluaThread.java:186)
ERROR: General, 1572290333448>     at se.krka.kahlua.vm.KahluaThread.luaMainloop(KahluaThread.java:1006)
ERROR: General, 1572290333458>     at se.krka.kahlua.vm.KahluaThread.call(KahluaThread.java:167)
ERROR: General, 1572290333468>     at se.krka.kahlua.vm.KahluaThread.pcall(KahluaThread.java:1942)
ERROR: General, 1572290333479>     at se.krka.kahlua.vm.KahluaThread.pcallvoid(KahluaThread.java:1774)
ERROR: General, 1572290333489>     at se.krka.kahlua.integration.LuaCaller.pcallvoid(LuaCaller.java:66)
ERROR: General, 1572290333499>     at se.krka.kahlua.integration.LuaCaller.protectedCallVoid(LuaCaller.java:134)
ERROR: General, 1572290333509>     at zombie.Lua.Event.trigger(Event.java:37)
ERROR: General, 1572290333519>     at zombie.Lua.LuaEventManager.triggerEvent(LuaEventManager.java:50)
ERROR: General, 1572290333529>     at zombie.core.Core.ResetLua(Core.java:3481)
ERROR: General, 1572290333539>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
ERROR: General, 1572290333548>     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
ERROR: General, 1572290333558>     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
ERROR: General, 1572290333568>     at java.lang.reflect.Method.invoke(Method.java:498)
ERROR: General, 1572290333578>     at se.krka.kahlua.integration.expose.caller.MethodCaller.call(MethodCaller.java:61)
ERROR: General, 1572290333588>     at se.krka.kahlua.integration.expose.LuaJavaInvoker.call(LuaJavaInvoker.java:198)
ERROR: General, 1572290333598>     at se.krka.kahlua.integration.expose.LuaJavaInvoker.call(LuaJavaInvoker.java:188)
ERROR: General, 1572290333607>     at se.krka.kahlua.vm.KahluaThread.callJava(KahluaThread.java:186)
ERROR: General, 1572290333617>     at se.krka.kahlua.vm.KahluaThread.luaMainloop(KahluaThread.java:1006)
ERROR: General, 1572290333627>     at se.krka.kahlua.vm.KahluaThread.call(KahluaThread.java:167)
ERROR: General, 1572290333637>     at se.krka.kahlua.vm.KahluaThread.pcall(KahluaThread.java:1942)
ERROR: General, 1572290333647>     at se.krka.kahlua.vm.KahluaThread.pcall(KahluaThread.java:1744)
ERROR: General, 1572290333657>     at se.krka.kahlua.integration.LuaCaller.pcall(LuaCaller.java:76)
ERROR: General, 1572290333666>     at zombie.ui.UIElement.onMouseUp(UIElement.java:1137)
ERROR: General, 1572290333676>     at zombie.ui.UIElement.onMouseUp(UIElement.java:1091)
ERROR: General, 1572290333686>     at zombie.ui.UIElement.onMouseUp(UIElement.java:1091)
ERROR: General, 1572290333696>     at zombie.ui.UIManager.update(UIManager.java:767)
ERROR: General, 1572290333706>     at zombie.GameWindow.logic(GameWindow.java:234)
ERROR: General, 1572290333715>     at zombie.core.profiling.AbstractPerformanceProfileProbe.invokeAndMeasure(AbstractPerformanceProfileProbe.java:71)
ERROR: General, 1572290333725>     at zombie.GameWindow.frameStep(GameWindow.java:673)
ERROR: General, 1572290333734>     at zombie.GameWindow.run_ez(GameWindow.java:594)
ERROR: General, 1572290333744>     at zombie.GameWindow.mainThread(GameWindow.java:460)
ERROR: General, 1572290333754>     at java.lang.Thread.run(Thread.java:745)
ERROR: General, 1572290333764> Caused by: java.lang.NullPointerException
ERROR: General, 1572290333774>     at zombie.characters.traits.TraitFactory.setMutualExclusive(TraitFactory.java:113)
ERROR: General, 1572290333784>     ... 39 more

 

 

Edited by Arsenal26

Share this post


Link to post
Share on other sites
On 2/18/2018 at 8:43 PM, Fenris_Wolf said:

(since I'm not a steam user).

WHAT!?

You are not a steam user? 😮

Share this post


Link to post
Share on other sites
2 minutes ago, Josko said:

You are not a steam user?

 

Heh when initially made the mod, nope. Got PZ through GoG. Not really a big fan of steam.
I do use it now, but basically only for IWBUMS testing and providing support on ORGM's workshop page.

Share this post


Link to post
Share on other sites
7 minutes ago, Fenris_Wolf said:

 

Heh when initially made the mod, nope. Got PZ through GoG. Not really a big fan of steam.
I do use it now, but basically only for IWBUMS testing and providing support on ORGM's workshop page.

Ah yes. Ofcourse! Forgot about IWBUMS being only on steam xD but I really like steam but then again I have been using steam my whole life haha 

Share this post


Link to post
Share on other sites

How is progression going with updating ORGM to b41?

 

The guns in vanilla zomboid are so lackluster and frankly boring...

 

Cant wait to play ORGM again on b41 ^__^

Share this post


Link to post
Share on other sites
3 hours ago, Josko said:

How is progression going with updating ORGM to b41?

I'll be posting a progression update in the main thread within the next day or so. But the short version is theres still lots to do.

Share this post


Link to post
Share on other sites

Added some new experimental features to the github version. 2 new settings for traits:

restricted =  a table list of profession names. If this table exists, any other professions not listed here will be unable to select the trait.

required = a table list of trait names. If this table exists, the traits listed here must be selected before this trait can be chosen.

 

This will allow for some pretty insane character creation depth, and full 'skill-trees' (trait-trees really).

Some light examples of refining the burglar profession:

-- burglars with mechanics trait and speed demon can also pick this
ProfessionFramework.addTrait('CarThief', {
    name = "UI_trait_CarThief", -- "Car Thief",
    description = "UI_trait_CarThiefDesc", -- "Professional car thief",
    cost = 3,
    restricted = {"burglar"},
    requires = {"Mechanics", "SpeedDemon" },
    xp = {
        [Perks.Electricity] = 1,
        [Perks.Mechanics] = 2,
    },
})

-- burglars with dextrous can pick this
ProfessionFramework.addTrait('SmashNGrab', {
    name = "UI_trait_SmashNGrab", -- "Smash and Grab",
    description = "UI_trait_SmashNGrabDesc", -- "Get in, get out, get paid.",
    cost = 3,
    restricted = {"burglar"},
    requires = {"Dextrous"},
    xp = {
        [Perks.ShortBlunt] = 1,
        [Perks.Sprinting] = 1,
    },
})

 

Some more complex examples:

 

-- the semi-deactivated marksman trait (+20% hit chance)
-- activated as a non-free trait for all professions
ProfessionFramework.addTrait('Marksman2', {
    name = "UI_trait_marksman",
    description = "UI_trait_marksmandesc",
    cost = 5,
    swap = "Marksman", -- swap with the real trait on start
})

-- police and military marksmen can pick sniper training
ProfessionFramework.addTrait('Sniper', {
    name = "UI_trait_Sniper", -- "Sniper",
    description = "UI_trait_SniperDesc", -- "Basic Sniper Training",
    cost = 2,
    required = {"Marksman2"}, -- requires this trait to be selected first
    restricted = {"policeofficer", "veteran"}, -- restricted to these professions
    xp = {
        [Perks.Aiming] = 1,
    },
})


-- military can also pick spec-ops training
ProfessionFramework.addTrait('SpecOps', {
    name = "UI_trait_SpecOps", -- "Spec-Ops Training",
    description = "UI_trait_SpecOpsDesc", -- "Special Forces Training",
    cost = 3,
    restricted = {"veteran"},
    xp = {
        [Perks.Aiming] = 1,
        [Perks.Reloading] = 1,
        [Perks.Strength] = 1,
        [Perks.Fitness] = 1,
    },
})

-- with basic sniper training and spec-ops training, the 
-- spec-ops sniper is now unlocked.
ProfessionFramework.addTrait('SpecSniper', {
    name = "UI_trait_SpecSniper", -- "Spec-Ops Sniper",
    description = "UI_trait_SpecSniperDesc", -- "The Reaper",
    cost = 2,
    required = {"SpecOps", "Sniper"},
    xp = {
        [Perks.Aiming] = 1,
        [Perks.Sneak] = 1,
        [Perks.Lightfoot] = 1,
    },
})

-- spec-ops combat engineering training is also available...
ProfessionFramework.addTrait('SpecEngineer', {
    name = "UI_trait_SpecEngineer", -- "Spec-Ops Engineer",
    description = "UI_trait_SpecEngineerDesc", -- "Any job, any time."
    cost = 4,
    required = {"SpecOps", "Mechanics"},
    xp = {
        [Perks.Mechanics] = 1,
        [Perks.Electricity] = 1,
        [Perks.Maintenance] = 1,
        [Perks.WoodWork] = 1,
    },
    recipes = { "Make Aerosol bomb", "Make Flame bomb", "Make Pipe bomb", "Make Noise generator", "Make Smoke Bomb" }
})

 

 

During the character creation process, changing professions or removing selected traits will also remove any selected traits that are no-longer valid (requirements not met).

 

 

 

Edited by Fenris_Wolf

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...