Dungeon Crawl custom code merge

Added numerous modding hooks.
Added rules:
	Character:KeepLevelOverMax - Don't delevel a character if they are found to be over max level rule.
	Spells:UseCHAScribeHack - Optionally omit spells with CHA in effect12 when using scribespells and traindiscs
	Combat:MonkACBonusWeight - Adjust the weight threshold for monk AC bonus
	Combat:ClientStunLevel - Adjust the level clients kicks and bashes start to roll for stuns
	Combat;QuiverWRHasteDiv - Adjust the divisor applied to weight reduction for haste calcs
	Combat:UseArcheryBonusRoll - Make archery stationary bonus a roll
	Combat:ArcheryBonusChance - Archery stationary bonus chance

Added account flags and associated perl wrappers
Added EVENT_ITEM_TICK for interactive items
Added EVENT_DUEL_WIN and EVENT_DUEL_LOSE, which exports $enemyname and $enemyid
Added timer and interval to console worldshutdown command
Added EQW interface for worldshutdown and server-wide messages
This commit is contained in:
Tabasco
2013-04-24 15:58:51 -05:00
parent b15cb08f54
commit 56490400ca
45 changed files with 1321 additions and 156 deletions
+34
View File
@@ -3500,6 +3500,38 @@ XS(XS__crosszonemessageplayerbyname)
XSRETURN_EMPTY;
}
XS(XS__GetSpellName);
XS(XS__GetSpellName)
{
dXSARGS;
if (items != 1)
Perl_croak(aTHX_ "Usage: GetSpellName(spell_id)");
int32 spell_id = (int32)SvUV(ST(0));
dXSTARG;
Const_char * RETVAL = GetSpellName(spell_id);
sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
XSRETURN(1);
}
XS(XS__GetMana);
XS(XS__GetMana)
{
dXSARGS;
if (items != 1)
Perl_croak(aTHX_ "Usage: GetMana(spell_id)");
uint32 spell_id = (uint32)SvIV(ST(0));
uint16 manacost = 0;
dXSTARG;
manacost = quest_manager.GetMana(spell_id);
XSRETURN_UV(manacost);
}
/*
This is the callback perl will look for to setup the
quest package's XSUBs
@@ -3722,6 +3754,8 @@ EXTERN_C XS(boot_quest)
newXS(strcpy(buf, "crosszonesignalclientbycharid"), XS__crosszonesignalclientbycharid, file);
newXS(strcpy(buf, "crosszonesignalclientbyname"), XS__crosszonesignalclientbyname, file);
newXS(strcpy(buf, "crosszonemessageplayerbyname"), XS__crosszonemessageplayerbyname, file);
newXS(strcpy(buf, "GetSpellName"), XS__GetSpellName, file);
newXS(strcpy(buf, "GetMana"), XS__GetMana, file);
XSRETURN_YES;
}