Suggestion: Pacifist-themed Challenge

Ideas for new content, features, and balance changes.

Poll: Would you be interested in this leveling challenge?

Yes
4
57%
Yes, with some modifications
0
No votes
Not sure right now
0
No votes
No
3
43%
Total votes: 7

User avatar
Mrsneed
Posts: 65

Suggestion: Pacifist-themed Challenge

Post#1 » Wed Jul 22, 2026 1:34 am

Concept

I want to propose a new leveling challenge. I got this idea from my wife who refuses to kill things in video games (I'm trying to get her to play, but this is her main point of refusal). The goal is to level a character to 60 without ever gaining experience from killing anything. That means no attackable targets and no PVP. All experience gains would instead come from questing, exploration, gathering, and professions.

Like the existing challenges, Pacifist should be able to be combined with most of the others (Hardcore, Craftmaster, Slow and Steady, etc).

Rules and Concepts

Proposed Sources of Experience Gain (Perhaps 1.5 to 2x gain):

• Quests that don't require any kill to complete (delivery, fetch, discovery, dialogue-only, and reputation quests)
• Escort quests where the NPC does all the fighting and the player never needs to engage except for healing
• Exploration (zone discovery)
• Herbalism and Mining gathering (experience gain on successful gathering completion)
• Fishing (experience gain on successful gathering completion, fishing dailies, and tournaments)
• Cooking, First Aid, and Survival (experience gain on successful gathering completion, and any related quest turn-ins)
• Crafting and crafting-related quest turn-ins (experience gain on successful craft completion)
• Battleground objectives (flag captures, zone captures)
• Rested experience applying to any allowed source above

Sources Without Experience Gain (0% gain):

• Killing anything by any means
• Kills made by a summoned pet, minion, etc (hunter pets, warlock demons, mind control)
• Quests that require killing to complete, even indirectly (collect 10 bear livers)
• Being present in a group when another player lands a killing blow or mob tagging
• PVP kills or PVP turn-ins tied to killing players
• Escort quests where combat is unavoidable (ambushes, forced encounters), even if the player isn't the one landing blows

Proposed Rewards

Rewards for this challenge would be centered around pacifist themes. Some ideas I had would include some, but not all of the following:

• Unique Title (Animal Friend, Pacifist, the Harmless, Azeroth's Friendliest Adventurer)
• Unique Pet (Sloth, Dove, maybe a cute playful dog)
• Large Bag (tied to needing a lot of space for crafting and gathering reagents)
• Unique Mount (I'm thinking a camel or other animal with a pack or saddlebags on it - again tied to the theme of crafting and gathering)

Community Input

I invite anyone to discuss this idea below. What are the pros and cons? How do you feel about the challenge? Is it too easy, hard, unfeasible, etc?

Ayesha
Posts: 24

Re: Suggestion: Pacifist-themed Challenge

Post#2 » Wed Jul 22, 2026 8:20 am

I love this. The available quest xp would be have to be turned way up to compensate. Xp from gathering would be hard to calculate tho because you can just gather lowest lvl herbs for example, of which there is an abundance. Or if grey plants/ores/crafts don’t give xp, then you can always abandon the profession and take it up again. Do
You have any idea how to balance that?
:? Support my suggestion aimed at giving more creative freedom for tmog: https://octowow.st/forum/viewtopic.php?t=413

User avatar
Mrsneed
Posts: 65

Re: Suggestion: Pacifist-themed Challenge

Post#3 » Wed Jul 22, 2026 2:21 pm

Ayesha wrote: Wed Jul 22, 2026 8:20 am I love this. The available quest xp would be have to be turned way up to compensate. Xp from gathering would be hard to calculate tho because you can just gather lowest lvl herbs for example, of which there is an abundance. Or if grey plants/ores/crafts don’t give xp, then you can always abandon the profession and take it up again. Do
You have any idea how to balance that?
One idea I had was to equate the color levels of crafting and gathering to the experience gained from killing mobs of the same color.

Mob Level Colors vs Character Level
Source: https://wowwiki-archive.fandom.com/wiki ... lty_colors
Red: Mob Level >= Char Level + 5
Orange: Mob Level = Char Level + (3 or 4)
Yellow: Mob Level = Char Level ± 2
Green: Mob Level <= Char Level - 3, but above Gray Level
Gray: Mob Level <= Gray Level

Seen here, someone did the work to show what % of normal experience is gained per mob kill per level: https://www.reddit.com/media?url=https% ... 698b8f8168

And of course, the basic formula is: XP = (Char Level * 5) + 45, where Char Level = Mob Level, for mobs in Azeroth

Therefore, by instituting the same formulas and altering them to revolve around skill level instead of mob level, it should be possible to define a pathway to level through this method.

Alternatively, it could be standardized around this analysis: https://imgur.com/grinding-xp-grid-amou ... xp-rKdFS0j . In this scenario, each instance of successful craft or node gather would award the level-relevant experience.

In order to maintain leveling balance and create progression, my thought was to tie profession skill level to actual level, in the same way that weapon skills work. So every level would raise your gathering and profession skill cap by 5, thereby capping you from overextending professions and outleveling crafting and gathering nodes.

Joyson
Posts: 54

Re: Suggestion: Pacifist-themed Challenge

Post#4 » Thu Jul 23, 2026 6:59 am

it would be basically impossible to integrate the into the game. it would require so much work from the devs

User avatar
Mrsneed
Posts: 65

Re: Suggestion: Pacifist-themed Challenge

Post#5 » Thu Jul 23, 2026 5:31 pm

Joyson wrote: Thu Jul 23, 2026 6:59 am it would be basically impossible to integrate the into the game. it would require so much work from the devs
That's a pretty definitive statement, what challenges do you foresee in implementing a leveling challenge like this?

Joyson
Posts: 54

Re: Suggestion: Pacifist-themed Challenge

Post#6 » Thu Jul 23, 2026 10:30 pm

you would have to program into the game experience gain on crafting/gathering which is not currently in the game, and then turn it off unless you have the challenge active, as well as creating a spell effect like [Expansive Mind] that is granted at character creation upon choosing the challenge that turns off exp for certain quests but not others. this would require serious programming knowledge outside of my expertise. the katana challenge for example is simply a spell effect on character creation that lists weapon ids that you can equip. very simple

User avatar
Mrsneed
Posts: 65

Re: Suggestion: Pacifist-themed Challenge

Post#7 » Fri Jul 24, 2026 4:23 pm

Joyson wrote: Thu Jul 23, 2026 10:30 pm you would have to program into the game experience gain on crafting/gathering which is not currently in the game, and then turn it off unless you have the challenge active, as well as creating a spell effect like [Expansive Mind] that is granted at character creation upon choosing the challenge that turns off exp for certain quests but not others. this would require serious programming knowledge outside of my expertise. the katana challenge for example is simply a spell effect on character creation that lists weapon ids that you can equip. very simple
I am a coding layman (no coding jobs, no professional coding experiences, very little personal experience), however I utilize AI at work and have extensive experience building code-based projects and apps. I was able to generate the below code by simply inputting the original idea seen above into the prompt window and siloing out the experience gain on skill up segment of the idea (it probably won't look right on a forum post though). In my workflows, I've successfully used these sorts of generate code outputs as a baseline and with Claude-directed feedback & prompting I have been able to produce the apps and projects that I mentioned. I've seen very little error in these projects and apps with my direction and oversight, with full on troubleshooting and after-creation revisions. Surely the expertise needed can be self-guided to some extent if I am able to do it as a layman.

Would it take time and resources to build this out? --> Yes
Would it be a challenge to incorporate it into the server? --> Yes
Is it possible to create and implement a challenge like this? --> Yes (based on my assessment)

Sample Claude-coded experience gain on skill up code

/*
* mod_gathering_xp.cpp
* ---------------------
* Standalone AzerothCore module: awards XP for successful gathering
* (Mining, Herbalism, Fishing) and successful crafting (Cooking, First Aid,
* and other tradeskills), independent of any kill.
*
* This is deliberately self-contained — no dependency on any other custom
* module — so it can be dropped into a modules/ folder and compiled on its
* own, or read as a standalone example.
*
* Two hooks do the real work:
*
* OnLootItem -> fires whenever a player loots an item from anything.
* We only award XP when the loot source is a GameObject
* (a mining vein, an herb node, a fishing bobber) rather
* than a creature corpse, and only when the item's
* required skill is a gathering skill. This is what keeps
* "loot from a kill" out of the XP path.
*
* OnCreateItem -> fires when a player crafts an item via a profession
* spell (cooking, first aid, tailoring, etc.). XP is
* awarded with diminishing returns the more times that
* specific recipe has been crafted, so people can't just
* spam-craft one cheap item to 60.
*
* Tuning constants are grouped at the top — the formulas here are simple
* starting points, not balanced numbers. You will want to adjust them
* against your server's leveling curve.
*/

#include "ScriptMgr.h"
#include "Player.h"
#include "Item.h"
#include "ItemTemplate.h"
#include "ObjectMgr.h"
#include "SharedDefines.h"
#include "DatabaseEnv.h"
#include <unordered_map>
#include <unordered_set>

// ---------------------------------------------------------------------
// Tuning
// ---------------------------------------------------------------------
namespace GatheringXP
{
// Fraction of "XP needed for next level" awarded per successful gather.
constexpr float GATHER_XP_PCT_OF_LEVEL = 0.004f; // 0.4%

// Fraction of "XP needed for next level" awarded per craft, before
// the diminishing-returns falloff below is applied.
constexpr float CRAFT_XP_PCT_OF_LEVEL = 0.006f; // 0.6%

// Each repeat craft of the same recipe multiplies the award by this,
// down to a floor, so the 50th batch of Cooked Crab Meat isn't
// still worth full XP.
constexpr float CRAFT_REPEAT_DECAY = 0.85f;
constexpr float CRAFT_MIN_MULTIPLIER = 0.15f;

// Skills that count as "gathering" for the OnLootItem hook.
inline bool IsGatheringSkill(uint32 skill)
{
return skill == SKILL_MINING || skill == SKILL_HERBALISM || skill == SKILL_FISHING;
}

// Skills that count as "crafting" for the OnCreateItem hook.
// (Cooking / First Aid explicitly called out in the design doc;
// the rest of the primary/secondary professions are included too
// since the same "reward the craft, not the kill" logic applies.)
inline bool IsCraftingSkill(uint32 skill)
{
switch (skill)
{
case SKILL_COOKING:
case SKILL_FIRST_AID:
case SKILL_ALCHEMY:
case SKILL_BLACKSMITHING:
case SKILL_LEATHERWORKING:
case SKILL_TAILORING:
case SKILL_ENGINEERING:
case SKILL_JEWELCRAFTING:
case SKILL_ENCHANTING:
return true;
default:
return false;
}
}
}

// ---------------------------------------------------------------------
// Repeat-craft tracking: guid -> (item entry -> times crafted)
// In-memory only in this example; see NOTES at the bottom for persisting it.
// ---------------------------------------------------------------------
static std::unordered_map<uint32, std::unordered_map<uint32, uint32>> CraftCounts;

static uint32 ComputeGatherXP(Player* player)
{
uint32 xpToNextLevel = player->GetXPForNextLevel();
return static_cast<uint32>(xpToNextLevel * GatheringXP::GATHER_XP_PCT_OF_LEVEL);
}

static uint32 ComputeCraftXP(Player* player, uint32 itemEntry)
{
uint32 xpToNextLevel = player->GetXPForNextLevel();
float base = xpToNextLevel * GatheringXP::CRAFT_XP_PCT_OF_LEVEL;

uint32& timesCrafted = CraftCounts[player->GetGUID().GetCounter()][itemEntry];

float multiplier = std::pow(GatheringXP::CRAFT_REPEAT_DECAY, static_cast<float>(timesCrafted));
if (multiplier < GatheringXP::CRAFT_MIN_MULTIPLIER)
multiplier = GatheringXP::CRAFT_MIN_MULTIPLIER;

++timesCrafted;

return static_cast<uint32>(base * multiplier);
}

// ---------------------------------------------------------------------
// PlayerScript
// ---------------------------------------------------------------------
class GatheringXP_PlayerScript : public PlayerScript
{
public:
GatheringXP_PlayerScript() : PlayerScript("GatheringXP_PlayerScript") {}

// Fires on every successful loot pickup, gathering nodes included.
void OnLootItem(Player* player, Item* item, uint32 /*count*/, ObjectGuid lootguid) override
{
if (!item)
return;

// Only GameObject-sourced loot counts as "gathering" — this is what
// excludes drops looted from a creature's corpse after a kill.
if (lootguid.GetTypeId() != TYPEID_GAMEOBJECT)
return;

ItemTemplate const* proto = sObjectMgr->GetItemTemplate(item->GetEntry());
if (!proto)
return;

if (!GatheringXP::IsGatheringSkill(proto->RequiredSkill))
return;

uint32 xp = ComputeGatherXP(player);
if (xp > 0)
player->GiveXP(xp, nullptr);
}

// Fires when a player successfully crafts an item via a profession spell.
void OnCreateItem(Player* player, Item* item, uint32 /*count*/) override
{
if (!item)
return;

ItemTemplate const* proto = sObjectMgr->GetItemTemplate(item->GetEntry());
if (!proto)
return;

if (!GatheringXP::IsCraftingSkill(proto->RequiredSkill))
return;

uint32 xp = ComputeCraftXP(player, item->GetEntry());
if (xp > 0)
player->GiveXP(xp, nullptr);
}

// Clear this player's repeat-craft memory on logout to bound memory use.
// (Trade-off noted in NOTES: this also means repeat-craft decay resets
// every session unless you persist it — see below.)
void OnLogout(Player* player) override
{
CraftCounts.erase(player->GetGUID().GetCounter());
}
};

void Addmod_gathering_xpScripts()
{
new GatheringXP_PlayerScript();
}

/*
* NOTES / known simplifications
* ------------------------------
* 1. Fishing: SKILL_FISHING loot generally comes through a GameObject
* (the fishing bobber), so it's covered by OnLootItem as written. Fishing
* dailies/tournaments referenced in the design doc are just quests at
* that point and get XP through the normal quest-completion path, not
* this module.
*
* 2. Persisting craft-repeat counts: right now CraftCounts is wiped on
* logout, so decay resets each session. To make it permanent, replace
* the in-memory map with a table like:
* CREATE TABLE character_craft_counts (
* guid INT UNSIGNED, item_entry INT UNSIGNED, times_crafted INT UNSIGNED,
* PRIMARY KEY (guid, item_entry)
* );
* and read/write it in OnLogin / OnCreateItem instead of the map.
*
* 3. GetXPForNextLevel()-based percentages mean gathering scales with
* level automatically, but doesn't scale with the *gathered material's*
* level (a level 60 skinning a level 1 critter yields the same XP as
* skinning a level 60 mob). If you want tier-appropriate rewards, key
* the multiplier off proto->RequiredLevel or an item quality check
* instead of a flat percentage.
*
* 4. This module has no on/off toggle of its own. If you're combining it
* with the Pacifist challenge module from before, gate both hooks behind
* that module's IsPacifist(player) check (or make gathering XP universal
* for all players — that's a design choice, not a technical requirement).
*/

Joyson
Posts: 54

Re: Suggestion: Pacifist-themed Challenge

Post#8 » Fri Jul 24, 2026 5:41 pm

yeah none of that "code" would work. world of warcraft runs off of the executable (wow.exe) and a database system. the most you can do is when building the server executable, modifying that code. ive tried using ai to modify the server code and it always results in, when built, a non functional server. these guys that actually work on turtle wow would have more experience than in me in explaining how to impliment it, but basically even something as simple as creating experience rewards for crafting is entirely done through modifying the server source code when building it. look up "building your own world of warcraft private server" and theres a step where you have access to the server's source code before running it through visual studio and running the build function. other than that, spells, items, quests, you can easily modify those through just simple server and then client database edits, which require a client patch most of the time. i tried building the server in visual studio with additional ai generated code to add a treasure chest dropped on player deaths that contain all of that player's non soulbound loot including gold but the resulting built product from visual studio was just an non functional server executable, you open it, the cmd window opens then just crashes and immediately closes. so maybe one of these extremely knowledgable developers might be able to impliment it.

User avatar
Mrsneed
Posts: 65

Re: Suggestion: Pacifist-themed Challenge

Post#9 » Sat Jul 25, 2026 2:17 pm

I have faith in Octodevs across the board. They plan on continuing development beyond what TWoW devs did and because of that I also have faith in their ability to develop custom content. I see this challenge as something doable in that regard. I don't know how challenging it would be to implement, but I think it would be possible for sure.

Who is online

Users browsing this forum: No registered users and 1 guest