Necromancer Mod?

Well i decided to put this project on hold for a bit and try making something simpler, using Catamodder. I already made some progress but i run into somethings that look weird (not bugs per say but weird errors). Could someone with modding experience help me here?

WARNING: WALL OF TEXT AHEAD

Sorry for reviving(pun intended) such an old thread, but i just wanted to say a few things about “necromancy=magic”.
It does not.
Although making an item that revives the dead, sets them to “friendly”, but doesn’t let you create too much minions might be tough, it doesn’t have to be “magical”.
Ever read “Herbert West—Reanimator”? A guy obsessed with death makes a serum that lets the dead creatures rise again(though they aren’t exactly “friendly” and it doesn’t always work). He is not a mage - he is just a mad scientist.
There is also Frankenstein’s monster, husks from mass effect series, and some other cases of “(pseudo)scientific necromancy”.
Thus, i don’t think it would conflict too much with Cataclysm’s Lore - though if a character was powerful enough to actually rise friendly zombies, that would mean he succeeded where all those dead scientists failed. Thus, practical necromancy(rising/creating creatures bigger and more useful in battle than squirrels) would only be possible at the endgame, and require a high level of “cooking” (btw, i LOVE how cooking also refers to crafting drugschemicals xD) and/or first aid and/or some completely new skill, added by the mod.
Also - although i am not against necromancy being canon, i understand that not everyone might like it, so i will be satisfied with a mod.
Now, about nerfing this skill, there are several methods which could be used separately or in combination, as to stop people from making a giant army that could easily take over the world:

  1. To make a “revival serum”/“craft” a monster, you would need really high levels of certain skills. Either the existing ones - like “survival”(to take out the body parts which your minions will no longer need in their un-life), “sewing”(to repair lightly damaged bodies), “first aid” (to repair even more damaged bodies, increase chances of success during revival/crafting, and to increase the quality of revived/crafted minons) and of course “cooking”(to make revival serum itself) or some completely new skill.
  2. To make a “revival serum”/“craft” a monster, you need some rare ingredients - e.g. marloss berries.
  3. Have a high chance of minions being NOT friendly, and attack the first thing they see after revival - you.
  4. Morale penalties at first, which will change to an illness called “obssessed with death” later. When you get this illness you will suffer morale penalties when there are no monsters in sight - whether yours or not. It will also freak out npc’s and animals.
  5. To become a necromancer, you need to contract a certain disease or acquire a rare mutation. It will grant you some knowledge about the nether realm, sure - but your body will start to decay and the only way to stop it would be injecting yourself with the “revival serum”. It might also cause nightmares, morale penalties, and so on.
  6. You need to find an item that spawns only ONCE(or really rarely) in the whole world. Lore-wise they will be research notes, made by one of the last living scientists, who decided to continue the work of his colleagues even if the whole world is falling apart and it no longer makes any sense. He suceeded in developing new powerful mutagens, drugs, CBM’s, robots(crafting a horde of manhacks would also be cool, but it’s for another topic), and most importantly, the “revival and control serum” before dying. The serum enables to revive even long-dead brain tissue, and forces the rised beasts to feel infatuated with the first person they see, thus protecting them with their lives and obeying some basic commands.
  7. The creatures revived by the player will be weaker than the natural ones(3-5 times weaker maybe?), and die easily.
    I hope people interested in modding this game will like my ideas(if they are actually possible) and at least consider adding them to the game.
    Also, hope you will forgive me for the terrible pun about "revival: of the “necro” thread, and the revival itself.

Scientists today actually have “necromanced” a bunch of bacteria and viruses with a very small silicon chip. It is, not at all, impossible with today’s tech.

Mother of god O.o
Can you link your source, please? D:

http://www.cracked.com/article_15643_5-scientific-reasons-zombie-apocalypse-could-actually-happen_p5.html
I have read an official article about this, but can’t find it atm.

I dont mind it not been magic. Im perfectly ok with it been a mad science thing of sorts, and it fits better with the world itself. The idea of creating a custom Frankenstein-like monster then bringing it too life sounds so cool!

Ok, i am now messing around with recipies and items, trying to make a “dormant minion” item. It will function like inactive manhack(I HOPE), activate or go dormant when asked(I HOPE) and be the first step in making “necromancy mod” real.
As soon as i manage to do it(or fail miserably) i’ll post its code(or whatever scraps i manage to code) here, for all who might want it.

okay, double post time!!!
as promised, posting what i think i did the right way(items and recipes) and what i failed to do despite trying(adding an action that would “activate” the minion and the blob item when used).
not sure if that’s how i am supposed to do it but here:

recipe book for necromancy:

{ "type" : "BOOK", "id" : "abdul_necro", "name" : "Principles of Post-Mortem Mind Control", "max_level" : 10, "description" : "A thick book containing research notes of a mad scientist. It describes various methods of reanimating and controlling the dead. There's a lot of gory details and technical language mixed in, so it's not easy to read.", "weight" : 2330, "to_hit" : 0, "color" : "black", "intelligence" : 14, "symbol" : "?", "material" : ["paper", "null"], "volume" : 5, "bashing" : -2, "cutting" : 0, "time" : 120, "fun" : -3, "skill" : "first aid", "price" : 20000, "required_level" : 0 }

recipies for necromancy:

{ "type": "recipe", "result": "control_chip", "category": "CC_OTHER", "subcategory": "CSC_OTHER_TOOLS", "skill_used": "mechanics", "skills_required": [["electronics", 5], ["computers", 5]], "difficulty": 6, "time": 30000, "reversible": true, "decomp_learn": 7, "autolearn": false, "book_learn": [[ "abdul_necro", 1 ] "tools": [ [ [ "screwdriver", -1], [ "toolset", -1] ], [ [ "soldering_iron", 10], [ "toolset", 1] ] ] "components": [ [ [ "processor", 1] ], [ [ "RAM", 1] ], [ [ "power_supply", 1], [ "plut_cell", 1] ] [ [ "cable", 2] ] [ [ "scrap", 2] ] },{ "type": "recipe", "result": "blob_dormant", "category": "CC_OTHER", "subcategory": "CC_OTHER_TOOLS", "skill used": "first aid", "skills_required": [[ "electronics", 2], ["first aid", 4], ["sewing, 1"]] "difficulty": 5, "time": 15000, "reversible": false, "autolearn": false, "book_learn": [[ "abdul_necro", 2 ] "tools":[ [ [ "needle_bone", 30], [ "needle_wood", 30], [ "sewing_kit", 30] ], [ ["UPS_off", 1] ] ] "components": [ [ "slime_scrap", 10] ] } { "type": "recipe", "result": "revival_serum", "category": "CC_CHEM", "subcategory": "CSC_CHEM_OTHER", "skill_used": "cooking", "skills_required": [ "first_aid", 3], "difficulty": 4 "time": 10000, "reversible": false, "autolearn": false, "book_learn": [[ "abdul_necro", 3 ] "tools":[ [ [ "chemistry_set", 25], [ "hotplate", 25], [ "toolset", 2], [ "fire", -1] ], [ [ "chemistry_set", -1] ] [ [ "vacutainer", -1] ] ] "components": [ ["slime_scrap", 2] ], [ ["marloss_berry", 1] ] } { "type": "recipe", "result": "minion_dormant", "category": "CC_OTHER", "subcategory": "CSC_OTHER_TOOLS", "skill_used": "first aid", "skills_required": [[ "sewing", 6], [ "first aid", 6]], "difficulty": 7, "time": 120000, "reversible": false, "autolearn" false, "book_learn": [[ "abdul_necro", 4 ] "tools": [ [ [ "needle_bone", 30], [ "needle_wood", 30], [ "sewing_kit", 30] ], [ [ "syringe", -1] ] [ [ "vacutainer", -1] ] ] "components": [ [ [ "revival_serum", 1] ], [ [ "meat_tainted", 8], [ "human_flesh", 8] ], [ [ "bone", 4] ], [ [ "blob_dormant", 1] ] ] }

tools for necromancy:

{ "id" : "control_chip", "type": "TOOL", "symbol": ".", "color": "gray", "name": "control chip", "description": "A small device, not bigger than a man's fist. It provides primitive organisms with electric stimulation, reviving them and forcing them to obey your commands. This version only works on blobs.", "price": 50000, "material": ["aluminum", "plastic"], "weight": 100, "volume": 0, "bashing": 0, "cutting": 0, "to_hit": 0, "initial_charges": 0, "charges_per_use": 0, "turns_per_charge": 0, "ammo": "NULL", "category" : "spare_parts", "use_action": "NONE" }, { "id" : "blob_dormant", "type": "TOOL", "symbol": ",", "color": "black", "name": "dormant blob", "description": "Several chuncks of blob scraps, stuffed with a control chip and sewn back together. A light shock from the UPS started the chip, bringing the blob back to life. Use this item to wake up the blob.", "price": 70000, "material": ["flesh"], "weight": 1000, "volume": 1, "bashing": 0, "cutting": 0, "to_hit": 0, "initial_charges": 0, "charges_per_use": 0, "turns_per_charge": 0, "ammo": "NULL", "revert_to": "null", "use_action": "AW_BLOB" }, { "id" : "minion_dormant", "type": "TOOL", "symbol": ",", "color": "green", "name": "dormant minion", "description": "Your very own undead servant. The blob controlling it's body is in a state of coma, awaiting your orders. Use this item to wake up the minion.", "price": 600000, "material": ["flesh"], "weight": 10000, "volume": 15, "bashing": 0, "cutting": 0, "to_hit": 0, "initial_charges": 0, "charges_per_use": 0, "turns_per_charge": 0, "ammo": "NULL", "revert_to": "null", "category": "tools", "use_action": "MINION" }

comestible for necromancy:

{ "id": "revival_serum", "type": "COMESTIBLE", "name": "revival serum", "spoils_in": 0, "use_action": "POISON", "stim": -50, "container" : "flask_glass", "comestible_type" : "MED", "symbol" : "!", "quench" : -100, "heal" : -30, "addiction_potential" : 12, "nutrition" : -100, "fun": -10, "color": "green", "description": "A potent drug, necessary when performing a revival operation on larger animals(including humans). It induces a violent allergic reactions in living organisms, so using it on yourself is a REALLY bad idea.", "price": 100000, "material": "null", "container" : "flask_glass", "weight": 1, "volume": , "bashing": 0, "cutting": 0, "to_hit": 0, "tool" : "syringe", "category": "drugs", }

failed code for minion and blob actions:

int iuse::aw_blob(player *p, item *, bool) { //my crappy programming skills aren't enough to code those guys from a scratch, so i copied and edited manhack's instructions to fit the blob and the minion std::vector<point> valid; // Valid spawn locations for (int x = p->posx - 1; x <= p->posx + 1; x++) { for (int y = p->posy - 1; y <= p->posy + 1; y++) { if (g->is_empty(x, y)) { valid.push_back(point(x, y)); } } } if (valid.empty()) { // No valid points! p->add_msg_if_player(m_info, _("There is no adjacent square to release the blob in!")); return 0; } int index = rng(0, valid.size() - 1); p->moves -= 60; monster blob(GetMType("mon_blob"), valid[index].x, valid[index].y); if (rng(0, p->int_cur / 2) + p->skillLevel("survival") / 2 + p->skillLevel("first_aid") < rng(0, 4)) { //if you got the blob through crafting, it shouldn't turn hostile p->add_msg_if_player(m_bad, _("You fuck something up and the blob turns hostile!")); } else { p->add_msg_if_player(_("Your blob awakes from it's slumber and surveys the area!")); m_blob.friendly = -1; } g->add_zombie("mon_blob"); return 1; } int iuse::minion(player *p, item *, bool) { std::vector<point> valid; // Valid spawn locations for (int x = p->posx - 1; x <= p->posx + 1; x++) { for (int y = p->posy - 1; y <= p->posy + 1; y++) { if (g->is_empty(x, y)) { valid.push_back(point(x, y)); } } } if (valid.empty()) { // No valid points! p->add_msg_if_player(m_info, _("There is no adjacent square to release your minion in!")); return 0; } int index = rng(0, valid.size() - 1); p->moves -= 60; monster minion(GetMType("mon_zombie"), valid[index].x, valid[index].y); if (rng(0, p->int_cur / 2) + p->skillLevel("survival") / 2 + p->skillLevel("first_aid") < rng(0, 4)) { p->add_msg_if_player(m_bad, _("You fucked something up and your minion turns hostile!")); } else { p->add_msg_if_player(_("Your minion awakes from it's slumber and surveys the area!")); m_zombie.friendly = -1; } g->add_zombie("mon_zombie"); return 1; }

[quote=“dambuk1, post:28, topic:4629”]okay, double post time!!!
…[/quote]
I wish i could help you with your code mate but my programing experience is very limited :frowning:

well, maybe i will finish it some time later on my own :confused:
at least i learned how to add recipies and items(that don’t have any custom effects) to the game :slight_smile:

It would be nice for it to be modular, the minion.

Cleaned up a few things for you: https://github.com/CleverRaven/Cataclysm-DDA/pull/7676

Many thanks, laughing man :smiley:
press spoiler to item_groups.json:

[ { "type" : "item_group", "id" : "shelter", "items":[ ["abdul_necro", 1] ] },{ "type" : "item_group", "id" : "chem_lab", "items":[ ["abdul_necro", 1] ] },{ "type" : "item_group", "id" : "science", "items":[ ["abdul_necro", 1] ] } ]
Yeah, it’s really low chance and only the book spawns - but that’ll make it more fun. You have to travel the world, find it and then slowly craft your undead army.
After i figure out how to use github and such i’ll think about adding more minions and books.
Also… is item_groups.json the only thing i have to modify in order to make items spawn?

Many thanks, laughing man :smiley:
press spoiler to item_groups.json:

[ { "type" : "item_group", "id" : "shelter", "items":[ ["abdul_necro", 1] ] },{ "type" : "item_group", "id" : "chem_lab", "items":[ ["abdul_necro", 1] ] },{ "type" : "item_group", "id" : "science", "items":[ ["abdul_necro", 1] ] } ]
Yeah, it’s really low chance and only the book spawns - but that’ll make it more fun. You have to travel the world, find it and then slowly craft your undead army.
After i figure out how to use github and such i’ll think about adding more minions and books.
Also… is item_groups.json the only thing i have to modify in order to make items spawn?[/quote]

Hey, seems like the sort of thing that would spawn in Strange Temples and mysterious cult-inhabited cabins in the woods, rather than science labs?

(And yeah, item_groups is the place for your generic item-spawning needs.)

Since it’s a mod, what you want to do is add entries (exactly as if they were in item_groups.json) in the necronimicron.json file, when you add spawn entries in a mod, it adds them to the main item spawn lists when the mod is active.

If you add them to item_groups.json and the mod is disabled, it can cause errors. (nothing serious, just debug messages and non-functional items being spawned)

[quote=“Kevin Granade, post:35, topic:4629”]Since it’s a mod, what you want to do is add entries (exactly as if they were in item_groups.json) in the necronimicron.json file, when you add spawn entries in a mod, it adds them to the main item spawn lists when the mod is active.

If you add them to item_groups.json and the mod is disabled, it can cause errors. (nothing serious, just debug messages and non-functional items being spawned)[/quote]
Thanks, i just saw how the folders of other mods looked, and they had separate files for items, recipies, etc. so i thought that’s how it’s supposed to be.
About strange temple and/or cults - i might add them, but with the lowest possible spawn rate for story reasons:

The person who made the book is not a mage - he is a scientist. His familywhich died and his work were the only things that gave his life a meaning. He didn’t have any ill intent, he didn’t worship the nether creatures or other horrors. He just wanted to continue his work from before the cataclysm, and kept doing it in various different locations before dying.

Yeah, some cultist might have found it and took it back to his/her/it’s base but i never really saw them wandering around :stuck_out_tongue:
Also - i just put everything together and tested it for game-crashing bugs so i made this thread: http://smf.cataclysmdda.com/index.php?topic=6508.0