#282 XP debt and a way to remove it needs to be implemented.

Closed
opened 3 years ago by neatz09 · 7 comments
neatz09 commented 3 years ago

see title/wand of forgiveness

see title/wand of forgiveness
image commented 3 years ago
Collaborator

xp_debt is part of the InfoStruct as a UInt32: http://cutpon.com:3000/devn00b/EQ2EMu/issues/239

while we do persist in the DB as xp_debt field -- it is not currently displayed to client nor do we account it in our formulas.

the value as it stands x/100 = x% xp debt

xp_debt is part of the InfoStruct as a UInt32: http://cutpon.com:3000/devn00b/EQ2EMu/issues/239 while we do persist in the DB as xp_debt field -- it is not currently displayed to client nor do we account it in our formulas. the value as it stands x/100 = x% xp debt
image commented 3 years ago
Collaborator

Experience Debt

  • When you die, a certain amount of your experience bar turns red. Note that this is future experience, not past experience
  • you will never level down, just have a harder time leveling up. - Experience debt is assessed for dying, but a large part of it can be recovered when you recover your spirit shard in the field

There are two ways to get rid of experience debt:

  • Experience debt diminishes when you are offline.
  • Experience debt is paid back as you hunt (you gain experience more slowly until the red debt is gone, and then you return to your normal XP rate).

When you are soloing, 100% of the expe- rience debt belongs to you, but when you’re in a group your group shares in your non-Spirit Shard debt. This means that it is equally important to protect fel- low group members as it is to protect yourself! Note that this also makes getting a good group twice as important; if you group with a suicidal Cleric once, try not to group with him again, because he shares his debt with you!

Experience Debt - When you die, a certain amount of your experience bar turns red. Note that this is future experience, not past experience - you will never level down, just have a harder time leveling up. - Experience debt is assessed for dying, but a large part of it can be recovered when you recover your spirit shard in the field There are two ways to get rid of experience debt: - Experience debt diminishes when you are offline. - Experience debt is paid back as you hunt (you gain experience more slowly until the red debt is gone, and then you return to your normal XP rate). When you are soloing, 100% of the expe- rience debt belongs to you, but when you’re in a group your group shares in your non-Spirit Shard debt. This means that it is equally important to protect fel- low group members as it is to protect yourself! Note that this also makes getting a good group twice as important; if you group with a suicidal Cleric once, try not to group with him again, because he shares his debt with you!
image commented 3 years ago
Collaborator
RULE_INIT(R_Combat, DeathExperienceDebt, "50.00"); // divide by 100, 50/100 = .5% debt per pve death
RULE_INIT(R_Combat, PVPDeathExperienceDebt, "25.00"); // divide by 100, 25/100 = .25% debt per pvp death
RULE_INIT(R_Combat, GroupExperienceDebt, "0"); // set to 1 means we will share debt between the group
RULE_INIT(R_Combat, ExperienceToDebt, "50.00"); // percentage of xp earned to debt vs obtained xp 50/100 = 50% to debt
RULE_INIT(R_Combat, ExperienceDebtRecoveryPercent, "5.00"); // recovery percentage per period of time, 5/100 = 5% recovered (so if .5% debt, .5*.05 = .025, .5-.025=.475% debt left)
RULE_INIT(R_Combat, ExperienceDebtRecoveryPeriod, "600"); // every 10 minutes (x*60 seconds) recover ExperienceDebtRecoveryPercent
RULE_INIT(R_Combat, EnableSpiritShards, "1");
RULE_INIT(R_Combat, SpiritShardSpawnScript, "SpawnScripts/Generic/SpiritShard.lua");
RULE_INIT(R_Combat, ShardDebtRecoveryPercent, "25.00"); // recovered percentage of debt upon obtainig shard, 25/100 means 25%.  If there is .5 DeathExperienceDebt, .5*25% = .125,  .5 - .125 = .375
bool GetRuleFlagBool(category, name)
float GetRuleFlagFloat(category, name)
int32 GetShardID(Spawn)
int32 GetShardCharID(Spawn)
int64 GetShardCreatedTimestamp(Spawn)
bool DeleteDBShardID(shardid) -- using GetShardID
int32 GetCharacterID(Spawn)
bool SetAccessToEntityCommandByCharID(Spawn, CharID, command_string, val) -- same as SetAccessToEntityCommand, but using a CharID instead of player
RULE_INIT(R_Combat, DeathExperienceDebt, "50.00"); // divide by 100, 50/100 = .5% debt per pve death RULE_INIT(R_Combat, PVPDeathExperienceDebt, "25.00"); // divide by 100, 25/100 = .25% debt per pvp death RULE_INIT(R_Combat, GroupExperienceDebt, "0"); // set to 1 means we will share debt between the group RULE_INIT(R_Combat, ExperienceToDebt, "50.00"); // percentage of xp earned to debt vs obtained xp 50/100 = 50% to debt RULE_INIT(R_Combat, ExperienceDebtRecoveryPercent, "5.00"); // recovery percentage per period of time, 5/100 = 5% recovered (so if .5% debt, .5*.05 = .025, .5-.025=.475% debt left) RULE_INIT(R_Combat, ExperienceDebtRecoveryPeriod, "600"); // every 10 minutes (x*60 seconds) recover ExperienceDebtRecoveryPercent RULE_INIT(R_Combat, EnableSpiritShards, "1"); RULE_INIT(R_Combat, SpiritShardSpawnScript, "SpawnScripts/Generic/SpiritShard.lua"); RULE_INIT(R_Combat, ShardDebtRecoveryPercent, "25.00"); // recovered percentage of debt upon obtainig shard, 25/100 means 25%. If there is .5 DeathExperienceDebt, .5*25% = .125, .5 - .125 = .375 bool GetRuleFlagBool(category, name) float GetRuleFlagFloat(category, name) int32 GetShardID(Spawn) int32 GetShardCharID(Spawn) int64 GetShardCreatedTimestamp(Spawn) bool DeleteDBShardID(shardid) -- using GetShardID int32 GetCharacterID(Spawn) bool SetAccessToEntityCommandByCharID(Spawn, CharID, command_string, val) -- same as SetAccessToEntityCommand, but using a CharID instead of player
image commented 3 years ago
Collaborator
alter table character_details modify column xp_debt float not null default 0.0;
CREATE TABLE `character_spirit_shards` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `timestamp` BIGINT signed NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `name` varchar(64) not null default '',
  `level` int(10) unsigned NOT NULL DEFAULT 0,
  `race` tinyint(3) unsigned NOT NULL DEFAULT 0,
  `gender` tinyint(3) unsigned NOT NULL DEFAULT 0,
  `adventure_class` tinyint(3) unsigned NOT NULL DEFAULT 0,
  `model_type` mediumint(8) unsigned NOT NULL DEFAULT 0,
  `soga_model_type` mediumint(8) unsigned NOT NULL DEFAULT 0,
  `hair_type` mediumint(8) unsigned NOT NULL DEFAULT 0,
  `hair_face_type` mediumint(8) unsigned NOT NULL DEFAULT 0,
  `wing_type` mediumint(8) unsigned NOT NULL DEFAULT 0,
  `chest_type` mediumint(8) unsigned NOT NULL DEFAULT 0,
  `legs_type` mediumint(8) unsigned NOT NULL DEFAULT 0,
  `soga_hair_type` mediumint(8) unsigned NOT NULL DEFAULT 0,
  `soga_hair_face_type` mediumint(8) unsigned NOT NULL DEFAULT 0,
  `hide_hood` tinyint(3) unsigned NOT NULL DEFAULT 0,
  `size` mediumint(8) unsigned NOT NULL DEFAULT 0,
  `collision_radius` mediumint(8) unsigned NOT NULL DEFAULT 0,
  `action_state` mediumint(8) unsigned NOT NULL DEFAULT 0,
  `visual_state` mediumint(8) unsigned NOT NULL DEFAULT 0,
  `mood_state` mediumint(8) unsigned NOT NULL DEFAULT 0,
  `emote_state` mediumint(8) unsigned NOT NULL DEFAULT 0,
  `pos_state` mediumint(8) unsigned NOT NULL DEFAULT 0,
  `activity_status` mediumint(8) unsigned NOT NULL DEFAULT 0,
  `sub_title` varchar(255) not null default '',
  `prefix_title` varchar(128) not null default '',
  `suffix_title` varchar(128) not null default '',
  `lastname` varchar(64) not null default '',
  `x` float not null default 0.0,
  `y` float not null default 0.0,
  `z` float not null default 0.0,
  `heading` float not null default 0.0,
  `gridid` int(10) unsigned NOT NULL DEFAULT 0,
  `zoneid` int(10) unsigned NOT NULL DEFAULT 0,
  `instanceid` int(10) unsigned NOT NULL DEFAULT 0,
  `charid` int(10) unsigned NOT NULL DEFAULT 0,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
``` alter table character_details modify column xp_debt float not null default 0.0; CREATE TABLE `character_spirit_shards` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `timestamp` BIGINT signed NOT NULL DEFAULT CURRENT_TIMESTAMP, `name` varchar(64) not null default '', `level` int(10) unsigned NOT NULL DEFAULT 0, `race` tinyint(3) unsigned NOT NULL DEFAULT 0, `gender` tinyint(3) unsigned NOT NULL DEFAULT 0, `adventure_class` tinyint(3) unsigned NOT NULL DEFAULT 0, `model_type` mediumint(8) unsigned NOT NULL DEFAULT 0, `soga_model_type` mediumint(8) unsigned NOT NULL DEFAULT 0, `hair_type` mediumint(8) unsigned NOT NULL DEFAULT 0, `hair_face_type` mediumint(8) unsigned NOT NULL DEFAULT 0, `wing_type` mediumint(8) unsigned NOT NULL DEFAULT 0, `chest_type` mediumint(8) unsigned NOT NULL DEFAULT 0, `legs_type` mediumint(8) unsigned NOT NULL DEFAULT 0, `soga_hair_type` mediumint(8) unsigned NOT NULL DEFAULT 0, `soga_hair_face_type` mediumint(8) unsigned NOT NULL DEFAULT 0, `hide_hood` tinyint(3) unsigned NOT NULL DEFAULT 0, `size` mediumint(8) unsigned NOT NULL DEFAULT 0, `collision_radius` mediumint(8) unsigned NOT NULL DEFAULT 0, `action_state` mediumint(8) unsigned NOT NULL DEFAULT 0, `visual_state` mediumint(8) unsigned NOT NULL DEFAULT 0, `mood_state` mediumint(8) unsigned NOT NULL DEFAULT 0, `emote_state` mediumint(8) unsigned NOT NULL DEFAULT 0, `pos_state` mediumint(8) unsigned NOT NULL DEFAULT 0, `activity_status` mediumint(8) unsigned NOT NULL DEFAULT 0, `sub_title` varchar(255) not null default '', `prefix_title` varchar(128) not null default '', `suffix_title` varchar(128) not null default '', `lastname` varchar(64) not null default '', `x` float not null default 0.0, `y` float not null default 0.0, `z` float not null default 0.0, `heading` float not null default 0.0, `gridid` int(10) unsigned NOT NULL DEFAULT 0, `zoneid` int(10) unsigned NOT NULL DEFAULT 0, `instanceid` int(10) unsigned NOT NULL DEFAULT 0, `charid` int(10) unsigned NOT NULL DEFAULT 0, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; ```
image commented 3 years ago
Collaborator

need to add offline xp debt recovery which means we need to track last time offline versus login time

need to add offline xp debt recovery which means we need to track last time offline versus login time
image commented 3 years ago
Collaborator

found some additional information on shards/xp debt: https://www.theclenchedfist.com/Content/pa=showpage/pid=13.html

Also apparently the first year it was close to 10% xp debt per death (yeowch) -- guess the trauma blanked that one out but dev remembered :P

third post down: https://forums.daybreakgames.com/eq2/index.php?threads/why-did-they-get-rid-of-shard-runs.398326/

The post above covered the why fairly well so I'll answer the death penalty question. Yes there still is one, its 0.5% XP Dept and a 10%(5% on some iteams) reduction of your equiped iteams durablity, if those iteams hit zero you get no effect from them. 
found some additional information on shards/xp debt: https://www.theclenchedfist.com/Content/pa=showpage/pid=13.html Also apparently the first year it was close to 10% xp debt per death (yeowch) -- guess the trauma blanked that one out but dev remembered :P third post down: https://forums.daybreakgames.com/eq2/index.php?threads/why-did-they-get-rid-of-shard-runs.398326/ The post above covered the why fairly well so I'll answer the death penalty question. Yes there still is one, its 0.5% XP Dept and a 10%(5% on some iteams) reduction of your equiped iteams durablity, if those iteams hit zero you get no effect from them.
image commented 3 years ago
Collaborator

Completed via http://cutpon.com:3000/devn00b/EQ2EMu/commit/65e7222de54a8a2f3be4e1e26fb2a8a0c972529a

Outstanding items to take to new issue #284

  • Spirit shards decaying life
  • Stat detrimental when shards exist
Completed via http://cutpon.com:3000/devn00b/EQ2EMu/commit/65e7222de54a8a2f3be4e1e26fb2a8a0c972529a Outstanding items to take to new issue #284 - Spirit shards decaying life - Stat detrimental when shards exist
Sign in to join this conversation.
Loading...
Cancel
Save
There is no content yet.