forked from github/server
earn_silver Zauber in script/xml ausgelagert.
bugfix snowman avoid huge amounts of log-messages handle renaming of spells.
This commit is contained in:
parent
77602d1316
commit
640652ef99
|
@ -1478,7 +1478,7 @@ do_combatmagic(battle *b, combatmagic_t was)
|
|||
}
|
||||
for (spellrank = 0; spellrank < MAX_SPELLRANK; spellrank++) {
|
||||
for (co = cll[spellrank]; co; co = co->next) {
|
||||
fighter * fig = (fighter*)co->magician;
|
||||
fighter * fig = co->magician.fig;
|
||||
const spell * sp = co->sp;
|
||||
int level = co->level;
|
||||
double power = co->force;
|
||||
|
|
|
@ -202,6 +202,7 @@ static int
|
|||
read_mage(attrib * a, FILE * F)
|
||||
{
|
||||
int i, mtype;
|
||||
boolean update = false;
|
||||
sc_mage * mage = (sc_mage*)a->data.v;
|
||||
char spname[64];
|
||||
|
||||
|
@ -234,7 +235,11 @@ read_mage(attrib * a, FILE * F)
|
|||
if (strcmp(spname, "end")==0) break;
|
||||
sp = find_spell(mage->magietyp, spname);
|
||||
}
|
||||
if (sp==NULL) continue;
|
||||
if (sp==NULL) {
|
||||
/* flag upstream to show that updatespellist() is necessary (hackish) */
|
||||
mage->spellcount = -1;
|
||||
continue;
|
||||
}
|
||||
add_spell(mage, sp);
|
||||
}
|
||||
return AT_READ_OK;
|
||||
|
@ -373,7 +378,7 @@ read_seenspell(attrib * a, FILE * f)
|
|||
sp = find_spell((magic_t)mtype, buf);
|
||||
}
|
||||
if (sp==NULL) {
|
||||
log_error(("could not find seenspell '%s'\n", buf));
|
||||
/* log_error(("could not find seenspell '%s'\n", buf)); */
|
||||
return AT_READ_FAIL;
|
||||
}
|
||||
a->data.v = sp;
|
||||
|
@ -1275,7 +1280,7 @@ fumble(region * r, unit * u, const spell * sp, int cast_grade)
|
|||
static void
|
||||
patzer(castorder *co)
|
||||
{
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
|
||||
cmistake(mage, co->order, 180, MSG_MAGIC);
|
||||
|
||||
|
@ -1290,7 +1295,7 @@ do_fumble(castorder *co)
|
|||
{
|
||||
curse * c;
|
||||
region * r = co->rt;
|
||||
unit * u = (unit*)co->magician;
|
||||
unit * u = co->magician.u;
|
||||
const spell *sp = co->sp;
|
||||
int level = co->level;
|
||||
int duration;
|
||||
|
@ -1558,7 +1563,7 @@ verify_unit(region * r, unit * mage, const spell * sp, spllprm * spobj, order *
|
|||
static int
|
||||
verify_targets(castorder *co)
|
||||
{
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
const spell *sp = co->sp;
|
||||
region *target_r = co->rt;
|
||||
spellparameter *sa = co->par;
|
||||
|
@ -2009,7 +2014,7 @@ new_castorder(void *u, unit *u2, const spell *sp, region *r, int lev,
|
|||
castorder *corder;
|
||||
|
||||
corder = calloc(1, sizeof(castorder));
|
||||
corder->magician = u;
|
||||
corder->magician.u = u;
|
||||
corder->familiar = u2;
|
||||
corder->sp = sp;
|
||||
corder->level = lev;
|
||||
|
@ -2680,7 +2685,7 @@ magic(void)
|
|||
order * ord = co->order;
|
||||
int verify, cast_level = co->level;
|
||||
boolean fumbled = false;
|
||||
unit * u = (unit *)co->magician;
|
||||
unit * u = co->magician.u;
|
||||
const spell *sp = co->sp;
|
||||
region * target_r = co->rt;
|
||||
|
||||
|
|
|
@ -124,7 +124,10 @@ typedef struct sc_mage {
|
|||
|
||||
typedef struct castorder {
|
||||
struct castorder *next;
|
||||
void *magician; /* Magier (kann vom Typ struct unit oder fighter sein) */
|
||||
union {
|
||||
struct unit * u;
|
||||
struct fighter * fig;
|
||||
} magician; /* Magier (kann vom Typ struct unit oder fighter sein) */
|
||||
struct unit *familiar; /* Vertrauter, gesetzt, wenn der Spruch durch
|
||||
den Vertrauten gezaubert wird */
|
||||
const struct spell *sp; /* Spruch */
|
||||
|
|
|
@ -1110,9 +1110,9 @@ readunit(FILE * F)
|
|||
if (i != -1){
|
||||
attrib * a;
|
||||
int csp = 0;
|
||||
|
||||
sc_mage * mage = calloc(1, sizeof(sc_mage));
|
||||
mage->magietyp = (magic_t) i;
|
||||
|
||||
mage->magietyp = (magic_t) i;
|
||||
mage->spellpoints = ri(F);
|
||||
mage->spchange = ri(F);
|
||||
while ((i = ri(F)) != -1) {
|
||||
|
@ -1878,10 +1878,16 @@ readgame(const char * filename, int backup)
|
|||
|
||||
while (--p >= 0) {
|
||||
unit * u = readunit(F);
|
||||
sc_mage * mage;
|
||||
assert(u->region==NULL);
|
||||
u->region = r;
|
||||
addlist2(up,u);
|
||||
update_interval(u->faction, u->region);
|
||||
mage = get_mage(u);
|
||||
if (mage && mage->spellcount<0) {
|
||||
mage->spellcount = 0;
|
||||
updatespelllist(u);
|
||||
}
|
||||
}
|
||||
}
|
||||
printf("\n");
|
||||
|
|
|
@ -53,8 +53,6 @@ extern int lastturn(void);
|
|||
|
||||
extern void read_items(FILE *f, struct item **it);
|
||||
extern void write_items(FILE *f, struct item *it);
|
||||
extern void a_read(FILE * f, struct attrib ** attribs);
|
||||
extern void a_write(FILE * f, const struct attrib * attribs);
|
||||
|
||||
extern const char * datapath(void);
|
||||
|
||||
|
|
|
@ -57,7 +57,7 @@ register_spell(spell * sp)
|
|||
spelllist_add(&spells, sp);
|
||||
}
|
||||
|
||||
/** versucht einen Spruch über gebiet + bame zu identifizieren.
|
||||
/** versucht einen Spruch über gebiet + name zu identifizieren.
|
||||
* gibt ansonsten NULL zurück */
|
||||
spell *
|
||||
find_spell(magic_t mtype, const char * name)
|
||||
|
|
|
@ -149,13 +149,8 @@ enum {
|
|||
SPL_SPARKLE_CHAOS,
|
||||
SPL_SPARKLE_DREAM = 154,
|
||||
SPL_PULLASTRAL = 156,
|
||||
SPL_FETCHASTRAL,
|
||||
SPL_ILLAUN_EARN_SILVER,
|
||||
SPL_GWYRRD_EARN_SILVER,
|
||||
SPL_DRAIG_EARN_SILVER,
|
||||
SPL_TYBIED_EARN_SILVER,
|
||||
SPL_CERDDOR_EARN_SILVER,
|
||||
SPL_SHOCKWAVE,
|
||||
SPL_FETCHASTRAL = 157,
|
||||
SPL_SHOCKWAVE = 163,
|
||||
SPL_UNDEADHERO = 164,
|
||||
SPL_BECOMEWYRM = 166,
|
||||
SPL_ETERNIZEWALL,
|
||||
|
|
|
@ -1211,6 +1211,7 @@ parse_spells(xmlDocPtr doc)
|
|||
if (xml_bvalue(node, "ship", false)) sp->sptyp |= ONSHIPCAST;
|
||||
if (xml_bvalue(node, "ocean", false)) sp->sptyp |= OCEANCASTABLE;
|
||||
if (xml_bvalue(node, "far", false)) sp->sptyp |= FARCASTING;
|
||||
if (xml_bvalue(node, "variable", false)) sp->sptyp |= SPELLLEVEL;
|
||||
|
||||
if (gamecode_enabled) {
|
||||
/* reading eressea/spells/spell/function */
|
||||
|
|
|
@ -91,7 +91,7 @@ sp_summon_alp(struct castorder *co)
|
|||
{
|
||||
unit *alp, *opfer;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
spellparameter *pa = co->par;
|
||||
|
||||
|
|
|
@ -569,7 +569,7 @@ sp_summon_familiar(castorder *co)
|
|||
unit *familiar;
|
||||
region *r = co->rt;
|
||||
region *target_region = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
const race * rc;
|
||||
skill_t sk;
|
||||
|
@ -672,7 +672,7 @@ sp_summon_familiar(castorder *co)
|
|||
static int
|
||||
sp_destroy_magic(castorder *co)
|
||||
{
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double force = co->force;
|
||||
spellparameter *pa = co->par;
|
||||
|
@ -763,7 +763,7 @@ static int
|
|||
sp_transferaura(castorder *co)
|
||||
{
|
||||
int aura, gain, multi = 2;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
spellparameter *pa = co->par;
|
||||
unit * u;
|
||||
|
@ -831,7 +831,7 @@ static int
|
|||
sp_goodwinds(castorder *co)
|
||||
{
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double power = co->force;
|
||||
int duration = cast_level+1;
|
||||
|
@ -886,7 +886,7 @@ static int
|
|||
sp_magicstreet(castorder *co)
|
||||
{
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
|
||||
if (!fval(r->terrain, LAND_REGION)) {
|
||||
cmistake(mage, co->order, 186, MSG_MAGIC);
|
||||
|
@ -927,7 +927,7 @@ static int
|
|||
sp_summonent(castorder *co)
|
||||
{
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double power = co->force;
|
||||
unit *u;
|
||||
|
@ -982,7 +982,7 @@ sp_blessstonecircle(castorder *co)
|
|||
{
|
||||
building *b;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
spellparameter *p = co->par;
|
||||
|
||||
|
@ -1029,7 +1029,7 @@ static int
|
|||
sp_maelstrom(castorder *co)
|
||||
{
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
curse * c;
|
||||
double power = co->force;
|
||||
|
@ -1077,7 +1077,7 @@ sp_mallorn(castorder *co)
|
|||
{
|
||||
region *r = co->rt;
|
||||
int cast_level = co->level;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
|
||||
if (!fval(r->terrain, LAND_REGION)) {
|
||||
cmistake(mage, co->order, 290, MSG_MAGIC);
|
||||
|
@ -1122,7 +1122,7 @@ static int
|
|||
sp_blessedharvest(castorder *co)
|
||||
{
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double power = co->force;
|
||||
int duration = (int)power+1;
|
||||
|
@ -1162,7 +1162,7 @@ sp_hain(castorder *co)
|
|||
{
|
||||
int trees;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double force = co->force;
|
||||
|
||||
|
@ -1207,7 +1207,7 @@ sp_mallornhain(castorder *co)
|
|||
{
|
||||
int trees;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double force = co->force;
|
||||
|
||||
|
@ -1241,7 +1241,7 @@ patzer_ents(castorder *co)
|
|||
int ents;
|
||||
unit *u;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
/* int cast_level = co->level; */
|
||||
double force = co->force;
|
||||
|
||||
|
@ -1306,7 +1306,7 @@ sp_rosthauch(castorder *co)
|
|||
int n;
|
||||
int success = 0;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
int force = (int)co->force;
|
||||
spellparameter *pa = co->par;
|
||||
|
@ -1401,7 +1401,7 @@ sp_kaelteschutz(castorder *co)
|
|||
int n, i = 0;
|
||||
int men;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double force = co->force;
|
||||
int duration = max(cast_level, (int)force) + 1;
|
||||
|
@ -1462,7 +1462,7 @@ static int
|
|||
sp_sparkle(castorder *co)
|
||||
{
|
||||
unit *u;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
spellparameter *pa = co->par;
|
||||
int duration = cast_level+1;
|
||||
|
@ -1522,7 +1522,7 @@ sp_create_irongolem(castorder *co)
|
|||
unit *u2;
|
||||
attrib *a;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double force = co->force;
|
||||
int number = lovar(force*8*RESOURCE_QUANTITY);
|
||||
|
@ -1585,7 +1585,7 @@ sp_create_stonegolem(castorder *co)
|
|||
unit *u2;
|
||||
attrib *a;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
int number = lovar(co->force*5*RESOURCE_QUANTITY);
|
||||
if (number<1) number = 1;
|
||||
|
@ -1649,7 +1649,7 @@ sp_great_drought(castorder *co)
|
|||
unit *u;
|
||||
boolean terraform = false;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double force = co->force;
|
||||
int duration = 2;
|
||||
|
@ -1781,7 +1781,7 @@ static int
|
|||
sp_treewalkenter(castorder *co)
|
||||
{
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
spellparameter *pa = co->par;
|
||||
double power = co->force;
|
||||
int cast_level = co->level;
|
||||
|
@ -1874,7 +1874,7 @@ sp_treewalkexit(castorder *co)
|
|||
int n;
|
||||
int erfolg = 0;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
double power = co->force;
|
||||
spellparameter *pa = co->par;
|
||||
int cast_level = co->level;
|
||||
|
@ -1996,7 +1996,7 @@ static int
|
|||
sp_holyground(castorder *co)
|
||||
{
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double power = co->force;
|
||||
curse * c;
|
||||
|
@ -2032,7 +2032,7 @@ sp_homestone(castorder *co)
|
|||
unit *u;
|
||||
curse * c;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double force = co->force;
|
||||
variant effect;
|
||||
|
@ -2095,7 +2095,7 @@ sp_drought(castorder *co)
|
|||
curse *c;
|
||||
unit *u;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double power = co->force;
|
||||
int duration = (int)power+1;
|
||||
|
@ -2163,7 +2163,7 @@ sp_fog_of_confusion(castorder *co)
|
|||
{
|
||||
unit *u;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double power = co->force;
|
||||
double range;
|
||||
|
@ -2237,7 +2237,7 @@ sp_ironkeeper(castorder *co)
|
|||
{
|
||||
unit *keeper;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
|
||||
if (rterrain(r) != T_MOUNTAIN && rterrain(r) != T_GLACIER) {
|
||||
|
@ -2290,7 +2290,7 @@ sp_stormwinds(castorder *co)
|
|||
unit *u;
|
||||
int erfolg = 0;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
double power = co->force;
|
||||
spellparameter *pa = co->par;
|
||||
int n, force = (int)power;
|
||||
|
@ -2373,7 +2373,7 @@ sp_earthquake(castorder *co)
|
|||
building *burg;
|
||||
unit *u;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
|
||||
for (burg = r->buildings; burg; burg = burg->next){
|
||||
|
@ -2430,7 +2430,7 @@ patzer_peasantmob(castorder *co)
|
|||
unit *u;
|
||||
attrib *a;
|
||||
region *r;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
|
||||
if (mage->region->land){
|
||||
r = mage->region;
|
||||
|
@ -2499,7 +2499,7 @@ sp_forest_fire(castorder *co)
|
|||
region *nr;
|
||||
direction_t i;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double probability;
|
||||
double percentage = (rand() % 8 + 1) * 0.1; /* 10 - 80% */
|
||||
|
@ -2594,7 +2594,7 @@ sp_fumblecurse(castorder *co)
|
|||
unit *target;
|
||||
int rx, sx;
|
||||
int duration;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double force = co->force;
|
||||
variant effect;
|
||||
|
@ -2628,7 +2628,7 @@ sp_fumblecurse(castorder *co)
|
|||
void
|
||||
patzer_fumblecurse(castorder *co)
|
||||
{
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double force = co->force;
|
||||
int duration = (cast_level/2)+1;
|
||||
|
@ -2669,7 +2669,7 @@ static int
|
|||
sp_summondragon(castorder *co)
|
||||
{
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
unit *u;
|
||||
int cast_level = co->level;
|
||||
double power = co->force;
|
||||
|
@ -2954,7 +2954,7 @@ sp_firewall(castorder *co)
|
|||
wall_data * fd;
|
||||
attrib * a;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double force = co->force;
|
||||
spellparameter *pa = co->par;
|
||||
|
@ -3066,7 +3066,7 @@ sp_wisps(castorder *co)
|
|||
region * r2;
|
||||
direction_t dir;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double force = co->force;
|
||||
spellparameter *pa = co->par;
|
||||
|
@ -3116,7 +3116,7 @@ sp_wisps(castorder *co)
|
|||
static int
|
||||
sp_unholypower(castorder *co)
|
||||
{
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
spellparameter *pa = co->par;
|
||||
int i;
|
||||
|
@ -3326,7 +3326,7 @@ static int
|
|||
sp_deathcloud(castorder *co)
|
||||
{
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
|
||||
attrib *a = a_find(r->attribs, &at_deathcloud);
|
||||
|
||||
|
@ -3343,7 +3343,7 @@ sp_deathcloud(castorder *co)
|
|||
void
|
||||
patzer_deathcloud(castorder *co)
|
||||
{
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int hp = (mage->hp - 2);
|
||||
|
||||
change_hitpoints(mage, -rand()%hp);
|
||||
|
@ -3369,7 +3369,7 @@ static int
|
|||
sp_plague(castorder *co)
|
||||
{
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
|
||||
plagues(r, true);
|
||||
|
@ -3399,7 +3399,7 @@ static int
|
|||
sp_summonshadow(castorder *co)
|
||||
{
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double force = co->force;
|
||||
unit *u;
|
||||
|
@ -3442,7 +3442,7 @@ sp_summonshadowlords(castorder *co)
|
|||
{
|
||||
unit *u;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double force = co->force;
|
||||
|
||||
|
@ -3476,7 +3476,7 @@ sp_chaossuction(castorder *co)
|
|||
region *rt;
|
||||
faction *f;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
|
||||
if (getplane(r)!=get_normalplane()) {
|
||||
|
@ -3547,7 +3547,7 @@ static int
|
|||
sp_magicboost(castorder *co)
|
||||
{
|
||||
curse * c;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double power = co->force;
|
||||
variant effect;
|
||||
|
@ -3608,7 +3608,7 @@ sp_magicboost(castorder *co)
|
|||
static int
|
||||
sp_bloodsacrifice(castorder *co)
|
||||
{
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
int aura;
|
||||
int skill = eff_skill(mage, SK_MAGIC, mage->region);
|
||||
|
@ -3666,7 +3666,7 @@ sp_summonundead(castorder *co)
|
|||
int undead;
|
||||
unit *u;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
int force = (int)(co->force*10);
|
||||
const race * race = new_race[RC_SKELETON];
|
||||
|
@ -3731,7 +3731,7 @@ sp_auraleak(castorder *co)
|
|||
double lost;
|
||||
unit *u;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
|
||||
lost = min(0.95, cast_level * 0.05);
|
||||
|
@ -3786,7 +3786,7 @@ sp_babbler(castorder *co)
|
|||
{
|
||||
unit *target;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
spellparameter *pa = co->par;
|
||||
|
||||
|
@ -3841,7 +3841,7 @@ sp_analysesong_obj(castorder *co)
|
|||
{
|
||||
int obj;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double force = co->force;
|
||||
spellparameter *pa = co->par;
|
||||
|
@ -3891,7 +3891,7 @@ static int
|
|||
sp_analysesong_unit(castorder *co)
|
||||
{
|
||||
unit *u;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double force = co->force;
|
||||
spellparameter *pa = co->par;
|
||||
|
@ -3941,7 +3941,7 @@ sp_charmingsong(castorder *co)
|
|||
unit *target;
|
||||
int duration;
|
||||
skill_t i;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double force = co->force;
|
||||
spellparameter *pa = co->par;
|
||||
|
@ -4027,7 +4027,7 @@ sp_song_resistmagic(castorder *co)
|
|||
{
|
||||
variant mr_bonus;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double force = co->force;
|
||||
int duration = (int)force+1;
|
||||
|
@ -4059,7 +4059,7 @@ sp_song_susceptmagic(castorder *co)
|
|||
{
|
||||
variant mr_malus;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double force = co->force;
|
||||
int duration = (int)force+1;
|
||||
|
@ -4091,7 +4091,7 @@ sp_rallypeasantmob(castorder *co)
|
|||
unit *u, *un;
|
||||
int erfolg = 0;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
|
||||
/* TODO
|
||||
|
@ -4160,7 +4160,7 @@ sp_raisepeasantmob(castorder *co)
|
|||
int n;
|
||||
variant anteil;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double force = co->force;
|
||||
int duration = (int)force+1;
|
||||
|
@ -4225,7 +4225,7 @@ sp_migranten(castorder *co)
|
|||
order * ord;
|
||||
int kontaktiert = 0;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
spellparameter *pa = co->par;
|
||||
const spell *sp = co->sp;
|
||||
|
@ -4332,7 +4332,7 @@ sp_song_of_peace(castorder *co)
|
|||
{
|
||||
unit *u;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double force = co->force;
|
||||
int duration = 2 + lovar(force/2);
|
||||
|
@ -4373,7 +4373,7 @@ sp_generous(castorder *co)
|
|||
{
|
||||
unit *u;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double force = co->force;
|
||||
int duration = (int)force+1;
|
||||
|
@ -4424,7 +4424,7 @@ sp_recruit(castorder *co)
|
|||
unit *u;
|
||||
region *r = co->rt;
|
||||
int n, maxp = rpeasants(r);
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double force = co->force;
|
||||
faction *f = mage->faction;
|
||||
|
@ -4477,7 +4477,7 @@ sp_bigrecruit(castorder *co)
|
|||
unit *u;
|
||||
region *r = co->rt;
|
||||
int n, maxp = rpeasants(r);
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double force = co->force;
|
||||
faction *f = mage->faction;
|
||||
|
@ -4530,7 +4530,7 @@ sp_pump(castorder *co)
|
|||
region *rt;
|
||||
boolean see = false;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
spellparameter *pa = co->par;
|
||||
int cast_level = co->level;
|
||||
const spell *sp = co->sp;
|
||||
|
@ -4600,7 +4600,7 @@ sp_seduce(castorder *co)
|
|||
int loot;
|
||||
item **itmp;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
spellparameter *pa = co->par;
|
||||
int cast_level = co->level;
|
||||
const spell *sp = co->sp;
|
||||
|
@ -4682,7 +4682,7 @@ sp_calm_monster(castorder *co)
|
|||
curse * c;
|
||||
unit *target;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
spellparameter *pa = co->par;
|
||||
int cast_level = co->level;
|
||||
double force = co->force;
|
||||
|
@ -4737,7 +4737,7 @@ sp_headache(castorder *co)
|
|||
int i;
|
||||
unit *target;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
spellparameter *pa = co->par;
|
||||
int cast_level = co->level;
|
||||
|
||||
|
@ -4795,7 +4795,7 @@ sp_raisepeasants(castorder *co)
|
|||
unit *u, *u2;
|
||||
attrib *a;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double power = co->force;
|
||||
|
||||
|
@ -4847,7 +4847,7 @@ sp_depression(castorder *co)
|
|||
{
|
||||
unit *u;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double force = co->force;
|
||||
int duration = (int)force+1;
|
||||
|
@ -4885,7 +4885,7 @@ static int
|
|||
sp_dragonsong(castorder *co)
|
||||
{
|
||||
region *r = co->rt; /* Zauberregion */
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
unit *u;
|
||||
int cast_level = co->level;
|
||||
double power = co->force;
|
||||
|
@ -4939,7 +4939,7 @@ static int
|
|||
sp_songofAttraction(castorder *co)
|
||||
{
|
||||
region *r = co->rt; /* Zauberregion */
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
/* double power = co->force; */
|
||||
|
||||
|
@ -4971,7 +4971,7 @@ int
|
|||
sp_puttorest(castorder *co)
|
||||
{
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int dead = deathcount(r);
|
||||
int laid_to_rest = dice((int)(co->force * 2), 100);
|
||||
message * seen = msg_message("puttorest", "mage", mage);
|
||||
|
@ -5005,7 +5005,7 @@ sp_icastle(castorder *co)
|
|||
const building_type * type;
|
||||
attrib *a;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double power = co->force;
|
||||
spellparameter *pa = co->par;
|
||||
|
@ -5069,7 +5069,7 @@ sp_illusionary_shapeshift(castorder *co)
|
|||
unit *u;
|
||||
const race * rc;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double power = co->force;
|
||||
spellparameter *pa = co->par;
|
||||
|
@ -5129,7 +5129,7 @@ int
|
|||
sp_readmind(castorder *co)
|
||||
{
|
||||
unit *target;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
spellparameter *pa = co->par;
|
||||
|
||||
|
@ -5171,7 +5171,7 @@ int
|
|||
sp_analyseregionsdream(castorder *co)
|
||||
{
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
|
||||
magicanalyse_region(r, mage, cast_level);
|
||||
|
@ -5195,7 +5195,7 @@ int
|
|||
sp_analysedream(castorder *co)
|
||||
{
|
||||
unit *u;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
spellparameter *pa = co->par;
|
||||
|
||||
|
@ -5229,7 +5229,7 @@ int
|
|||
sp_baddreams(castorder *co)
|
||||
{
|
||||
int duration;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double power = co->force;
|
||||
region *r = co->rt;
|
||||
|
@ -5272,7 +5272,7 @@ sp_gooddreams(castorder *co)
|
|||
int duration;
|
||||
curse * c;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double power = co->force;
|
||||
variant effect;
|
||||
|
@ -5310,7 +5310,7 @@ sp_clonecopy(castorder *co)
|
|||
unit *clone;
|
||||
region *r = co->rt;
|
||||
region *target_region = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
|
||||
if (get_clone(mage) != NULL ) {
|
||||
|
@ -5337,7 +5337,7 @@ sp_dreamreading(castorder *co)
|
|||
{
|
||||
unit *u,*u2;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
spellparameter *pa = co->par;
|
||||
double power = co->force;
|
||||
|
@ -5385,7 +5385,7 @@ int
|
|||
sp_sweetdreams(castorder *co)
|
||||
{
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double power = co->force;
|
||||
spellparameter *pa = co->par;
|
||||
|
@ -5432,7 +5432,7 @@ int
|
|||
sp_disturbingdreams(castorder *co)
|
||||
{
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double power = co->force;
|
||||
int duration = 1 + (int)(power/6);
|
||||
|
@ -5456,7 +5456,7 @@ sp_dream_of_confusion(castorder *co)
|
|||
unit *u;
|
||||
region_list *rl,*rl2;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double power = co->force;
|
||||
double range = (power-14)/2-1;
|
||||
|
@ -5522,7 +5522,7 @@ int
|
|||
sp_analysemagic(castorder *co)
|
||||
{
|
||||
int obj;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
spellparameter *pa = co->par;
|
||||
|
||||
|
@ -5572,7 +5572,7 @@ int
|
|||
sp_itemcloak(castorder *co)
|
||||
{
|
||||
unit *target;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double power = co->force;
|
||||
int duration = (int)power+1;
|
||||
|
@ -5613,7 +5613,7 @@ sp_resist_magic_bonus(castorder *co)
|
|||
int n, m, opfer;
|
||||
variant resistbonus;
|
||||
int duration = 6;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double power = co->force;
|
||||
spellparameter *pa = co->par;
|
||||
|
@ -5676,7 +5676,7 @@ sp_enterastral(castorder *co)
|
|||
int remaining_cap;
|
||||
int n, w;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double power = co->force;
|
||||
spellparameter *pa = co->par;
|
||||
|
@ -5791,7 +5791,7 @@ sp_pullastral(castorder *co)
|
|||
int remaining_cap;
|
||||
int n, w;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double power = co->force;
|
||||
spellparameter *pa = co->par;
|
||||
|
@ -5918,7 +5918,7 @@ sp_leaveastral(castorder *co)
|
|||
int remaining_cap;
|
||||
int n, w;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double power = co->force;
|
||||
spellparameter *pa = co->par;
|
||||
|
@ -6033,7 +6033,7 @@ int
|
|||
sp_fetchastral(castorder *co)
|
||||
{
|
||||
int n;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
spellparameter *pa = co->par;
|
||||
double power = co->force;
|
||||
|
@ -6143,7 +6143,7 @@ sp_showastral(castorder *co)
|
|||
int c = 0;
|
||||
region_list *rl, *rl2;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double power = co->force;
|
||||
|
||||
|
@ -6232,7 +6232,7 @@ sp_viewreality(castorder *co)
|
|||
region_list *rl, *rl2;
|
||||
unit *u;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
|
||||
if(getplaneid(r) != 1) {
|
||||
|
@ -6273,7 +6273,7 @@ sp_disruptastral(castorder *co)
|
|||
region *rt;
|
||||
unit *u;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double power = co->force;
|
||||
int duration = (int)(power/3)+1;
|
||||
|
@ -6379,7 +6379,7 @@ sp_eternizewall(castorder *co)
|
|||
curse * c;
|
||||
building *b;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double power = co->force;
|
||||
spellparameter *pa = co->par;
|
||||
|
@ -6440,7 +6440,7 @@ sp_permtransfer(castorder *co)
|
|||
int aura;
|
||||
unit *tu;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
spellparameter *pa = co->par;
|
||||
const spell *sp = co->sp;
|
||||
|
@ -6490,7 +6490,7 @@ sp_movecastle(castorder *co)
|
|||
region *target_region;
|
||||
unit *u, *unext;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
spellparameter *pa = co->par;
|
||||
const spell *sp = co->sp;
|
||||
|
@ -6584,7 +6584,7 @@ sp_flying_ship(castorder *co)
|
|||
ship *sh;
|
||||
unit *u;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double power = co->force;
|
||||
spellparameter *pa = co->par;
|
||||
|
@ -6649,7 +6649,7 @@ sp_stealaura(castorder *co)
|
|||
{
|
||||
int taura;
|
||||
unit *u;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double power = co->force;
|
||||
spellparameter *pa = co->par;
|
||||
|
@ -6720,7 +6720,7 @@ sp_antimagiczone(castorder *co)
|
|||
double power;
|
||||
variant effect;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double force = co->force;
|
||||
int duration = (int)force+1;
|
||||
|
@ -6779,7 +6779,7 @@ static int
|
|||
sp_magicrunes(castorder *co)
|
||||
{
|
||||
int duration;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double force = co->force;
|
||||
spellparameter *pa = co->par;
|
||||
|
@ -6840,7 +6840,7 @@ sp_speed2(castorder *co)
|
|||
{
|
||||
int n, maxmen, used = 0, dur, men;
|
||||
unit *u;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double force = co->force;
|
||||
spellparameter *pa = co->par;
|
||||
|
@ -6901,7 +6901,7 @@ sp_q_antimagie(castorder *co)
|
|||
curse * c = NULL;
|
||||
int succ;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double force = co->force;
|
||||
spellparameter *pa = co->par;
|
||||
|
@ -6983,7 +6983,7 @@ sp_destroy_curse(castorder *co)
|
|||
int obj;
|
||||
curse * c;
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
double force = co->force;
|
||||
spellparameter *pa = co->par;
|
||||
|
@ -7072,7 +7072,7 @@ sp_destroy_curse(castorder *co)
|
|||
int
|
||||
sp_becomewyrm(castorder *co)
|
||||
{
|
||||
unit *u = (unit *)co->magician;
|
||||
unit *u = co->magician.u;
|
||||
int wyrms_already_created = 0;
|
||||
int wyrms_allowed;
|
||||
attrib *a;
|
||||
|
@ -7115,7 +7115,7 @@ static int
|
|||
sp_wdwpyramid(castorder *co)
|
||||
{
|
||||
region *r = co->rt;
|
||||
unit *mage = (unit *)co->magician;
|
||||
unit *mage = co->magician.u;
|
||||
int cast_level = co->level;
|
||||
|
||||
if(a_find(r->attribs, &at_wdwpyramid) != NULL) {
|
||||
|
@ -7149,32 +7149,6 @@ sp_wdwpyramid(castorder *co)
|
|||
return cast_level;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------- */
|
||||
/* Name: Alltagszauber, hat je nach Gebiet anderen Namen
|
||||
* Stufe: 1
|
||||
* Gebiet: alle
|
||||
* Wirkung: der Magier verdient $50 pro Spruchstufe
|
||||
* Kosten: 1 SP pro Stufe
|
||||
*/
|
||||
#include "../gamecode/economy.h"
|
||||
/* TODO: das ist scheisse, aber spells gehören eh nicht in den kernel */
|
||||
int
|
||||
sp_earn_silver(castorder *co)
|
||||
{
|
||||
unit *mage = (unit *)co->magician;
|
||||
double force = co->force;
|
||||
region *r = co->rt;
|
||||
int wanted = (int)(force * 50);
|
||||
int earned = min(rmoney(r), wanted);
|
||||
|
||||
rsetmoney(r, rmoney(r) - earned);
|
||||
change_money(mage, earned);
|
||||
/* TODO klären: ist das Silber damit schon reserviert? */
|
||||
|
||||
add_income(mage, IC_MAGIC, wanted, earned);
|
||||
return co->level;
|
||||
}
|
||||
|
||||
typedef struct spelldata {
|
||||
spellid_t id;
|
||||
const char *sname;
|
||||
|
@ -7211,21 +7185,6 @@ static spelldata spelldaten[] =
|
|||
},
|
||||
(spell_f)sp_blessedharvest, NULL
|
||||
},
|
||||
{
|
||||
SPL_GWYRRD_EARN_SILVER, "gwyrrdearnsilver", NULL,
|
||||
NULL, NULL,
|
||||
M_DRUIDE,
|
||||
(SPELLLEVEL|ONSHIPCAST),
|
||||
5, 1,
|
||||
{
|
||||
{ "aura", 1, SPC_LEVEL },
|
||||
{ 0, 0, 0 },
|
||||
{ 0, 0, 0 },
|
||||
{ 0, 0, 0 },
|
||||
{ 0, 0, 0 }
|
||||
},
|
||||
(spell_f)sp_earn_silver, NULL
|
||||
},
|
||||
{
|
||||
SPL_STONEGOLEM, "stonegolem", NULL, NULL, NULL,
|
||||
M_DRUIDE, (SPELLLEVEL), 4, 1,
|
||||
|
@ -7703,20 +7662,6 @@ static spelldata spelldaten[] =
|
|||
},
|
||||
(spell_f)sp_sparkle, NULL
|
||||
},
|
||||
{
|
||||
SPL_DRAIG_EARN_SILVER, "draigearnsilver", NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
M_CHAOS, (SPELLLEVEL|ONSHIPCAST), 5, 1,
|
||||
{
|
||||
{ "aura", 1, SPC_LEVEL },
|
||||
{ 0, 0, 0 },
|
||||
{ 0, 0, 0 },
|
||||
{ 0, 0, 0 },
|
||||
{ 0, 0, 0 }
|
||||
},
|
||||
(spell_f)sp_earn_silver, NULL
|
||||
},
|
||||
{
|
||||
SPL_FIREBALL, "fireball", NULL, NULL, NULL,
|
||||
M_CHAOS, (COMBATSPELL | SPELLLEVEL), 5, 2,
|
||||
|
@ -8027,20 +7972,6 @@ static spelldata spelldaten[] =
|
|||
},
|
||||
(spell_f)sp_sparkle, NULL
|
||||
},
|
||||
{
|
||||
SPL_ILLAUN_EARN_SILVER, "illaunearnsilver", NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
M_TRAUM, (SPELLLEVEL|ONSHIPCAST), 5, 1,
|
||||
{
|
||||
{ "aura", 1, SPC_LEVEL },
|
||||
{ 0, 0, 0 },
|
||||
{ 0, 0, 0 },
|
||||
{ 0, 0, 0 },
|
||||
{ 0, 0, 0 }
|
||||
},
|
||||
(spell_f)sp_earn_silver, NULL
|
||||
},
|
||||
{
|
||||
SPL_SHADOWKNIGHTS, "shadowknights", NULL, NULL, NULL,
|
||||
M_TRAUM, (PRECOMBATSPELL | SPELLLEVEL), 4, 1,
|
||||
|
@ -8373,18 +8304,6 @@ static spelldata spelldaten[] =
|
|||
},
|
||||
(spell_f)sp_denyattack, NULL
|
||||
},
|
||||
{
|
||||
SPL_CERDDOR_EARN_SILVER, "jugglery", NULL, NULL, NULL,
|
||||
M_BARDE, (SPELLLEVEL|ONSHIPCAST), 5, 1,
|
||||
{
|
||||
{ "aura", 1, SPC_LEVEL },
|
||||
{ 0, 0, 0 },
|
||||
{ 0, 0, 0 },
|
||||
{ 0, 0, 0 },
|
||||
{ 0, 0, 0 }
|
||||
},
|
||||
(spell_f)sp_earn_silver, NULL
|
||||
},
|
||||
{
|
||||
SPL_HEALINGSONG, "song_of_healing", NULL, NULL, NULL,
|
||||
M_BARDE, (POSTCOMBATSPELL | SPELLLEVEL), 5, 2,
|
||||
|
@ -8926,18 +8845,6 @@ static spelldata spelldaten[] =
|
|||
},
|
||||
(spell_f)sp_itemcloak, NULL
|
||||
},
|
||||
{
|
||||
SPL_TYBIED_EARN_SILVER, "miracle_doctor", NULL, NULL, NULL,
|
||||
M_ASTRAL, (SPELLLEVEL|ONSHIPCAST), 5, 1,
|
||||
{
|
||||
{ "aura", 1, SPC_LEVEL },
|
||||
{ 0, 0, 0 },
|
||||
{ 0, 0, 0 },
|
||||
{ 0, 0, 0 },
|
||||
{ 0, 0, 0 }
|
||||
},
|
||||
(spell_f)sp_earn_silver, NULL
|
||||
},
|
||||
{
|
||||
SPL_TYBIED_FUMBLESHIELD, "tybiedfumbleshield", NULL, NULL, NULL,
|
||||
M_ASTRAL, (PRECOMBATSPELL | SPELLLEVEL), 2, 2,
|
||||
|
|
|
@ -247,18 +247,16 @@ a_age(attrib ** p)
|
|||
return (*p!=NULL);
|
||||
}
|
||||
|
||||
void
|
||||
int
|
||||
a_read(FILE * f, attrib ** attribs)
|
||||
{
|
||||
int key;
|
||||
int key, retval = AT_READ_OK;
|
||||
char zText[128];
|
||||
strcpy(zText, "unknown");
|
||||
|
||||
key = -1;
|
||||
fscanf(f, "%s", zText);
|
||||
if (!strcmp(zText, "end")) return;
|
||||
/* { fgets(zText, sizeof(zText), f); ENNO: was ist das? "always ends with \n" ? */
|
||||
/* key=-1; }*/
|
||||
if (strcmp(zText, "end")==0) return retval;
|
||||
else key = __at_hashkey(zText);
|
||||
|
||||
while(key!=-1) {
|
||||
|
@ -275,6 +273,7 @@ a_read(FILE * f, attrib ** attribs)
|
|||
a_add(attribs, na);
|
||||
break;
|
||||
case AT_READ_FAIL:
|
||||
retval = AT_READ_FAIL;
|
||||
a_free(na);
|
||||
break;
|
||||
default:
|
||||
|
@ -289,6 +288,7 @@ a_read(FILE * f, attrib ** attribs)
|
|||
if (!strcmp(zText, "end")) break;
|
||||
key = __at_hashkey(zText);
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -74,7 +74,7 @@ extern attrib * a_new(const attrib_type * at);
|
|||
extern void a_free(attrib * a);
|
||||
|
||||
extern int a_age(attrib ** attribs);
|
||||
extern void a_read(FILE * f, attrib ** attribs);
|
||||
extern int a_read(FILE * f, attrib ** attribs);
|
||||
extern void a_write(FILE * f, const attrib * attribs);
|
||||
|
||||
#define DEFAULT_AGE NULL
|
||||
|
|
|
@ -13,6 +13,7 @@ without prior permission by the authors of Eressea.
|
|||
#include "log.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include <time.h>
|
||||
|
@ -75,25 +76,52 @@ log_close(void)
|
|||
logfile = 0;
|
||||
}
|
||||
|
||||
static int
|
||||
check_dupe(const char * format, const char * type)
|
||||
{
|
||||
static const char * last_type;
|
||||
static char last_message[32];
|
||||
static int dupes = 0;
|
||||
if (strncmp(last_message, format, sizeof(last_message))==0) {
|
||||
++dupes;
|
||||
return 1;
|
||||
}
|
||||
if (dupes) {
|
||||
fprintf(logfile, "%s: last error repeated %d times\n", last_type, dupes+1);
|
||||
if (logfile!=stderr) {
|
||||
if (flags & LOG_CPERROR) {
|
||||
fprintf(stderr, "%s: last error repeated %d times\n", last_type, dupes+1);
|
||||
}
|
||||
}
|
||||
dupes = 0;
|
||||
}
|
||||
strncpy(last_message, format, sizeof(last_message));
|
||||
last_type = type;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
_log_warn(const char * format, ...)
|
||||
{
|
||||
va_list marker;
|
||||
fflush(stdout);
|
||||
if (!logfile) logfile = stderr;
|
||||
fputs("WARNING: ", logfile);
|
||||
va_start(marker, format);
|
||||
vfprintf(logfile, format, marker);
|
||||
va_end(marker);
|
||||
if (logfile!=stderr) {
|
||||
if (flags & LOG_CPWARNING) {
|
||||
fputs("WARNING: ", stderr);
|
||||
va_start(marker, format);
|
||||
vfprintf(stderr, format, marker);
|
||||
va_end(marker);
|
||||
}
|
||||
if (flags & LOG_FLUSH) {
|
||||
log_flush();
|
||||
|
||||
if (!check_dupe(format, "WARNING")) {
|
||||
va_list marker;
|
||||
fputs("WARNING: ", logfile);
|
||||
va_start(marker, format);
|
||||
vfprintf(logfile, format, marker);
|
||||
va_end(marker);
|
||||
if (logfile!=stderr) {
|
||||
if (flags & LOG_CPWARNING) {
|
||||
fputs("WARNING: ", stderr);
|
||||
va_start(marker, format);
|
||||
vfprintf(stderr, format, marker);
|
||||
va_end(marker);
|
||||
}
|
||||
if (flags & LOG_FLUSH) {
|
||||
log_flush();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -101,22 +129,24 @@ _log_warn(const char * format, ...)
|
|||
void
|
||||
_log_error(const char * format, ...)
|
||||
{
|
||||
va_list marker;
|
||||
fflush(stdout);
|
||||
if (!logfile) logfile = stderr;
|
||||
|
||||
fputs("ERROR: ", logfile);
|
||||
va_start(marker, format);
|
||||
vfprintf(logfile, format, marker);
|
||||
va_end(marker);
|
||||
if (logfile!=stderr) {
|
||||
if (flags & LOG_CPERROR) {
|
||||
fputs("ERROR: ", stderr);
|
||||
va_start(marker, format);
|
||||
vfprintf(stderr, format, marker);
|
||||
va_end(marker);
|
||||
if (!check_dupe(format, "ERROR")) {
|
||||
va_list marker;
|
||||
fputs("ERROR: ", logfile);
|
||||
va_start(marker, format);
|
||||
vfprintf(logfile, format, marker);
|
||||
va_end(marker);
|
||||
if (logfile!=stderr) {
|
||||
if (flags & LOG_CPERROR) {
|
||||
fputs("ERROR: ", stderr);
|
||||
va_start(marker, format);
|
||||
vfprintf(stderr, format, marker);
|
||||
va_end(marker);
|
||||
}
|
||||
log_flush();
|
||||
}
|
||||
log_flush();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -90,11 +90,17 @@ static int
|
|||
lua_callspell(castorder *co)
|
||||
{
|
||||
const char * fname = co->sp->sname;
|
||||
unit * mage = (unit*)co->magician;
|
||||
unit * mage = co->familiar?co->familiar:co->magician.u;
|
||||
int retval = -1;
|
||||
const char * hashpos = strchr(fname, '#');
|
||||
char fbuf[64];
|
||||
|
||||
if (co->familiar) {
|
||||
mage = co->familiar;
|
||||
if (hashpos!=NULL) {
|
||||
ptrdiff_t len = hashpos - fname;
|
||||
assert(len<sizeof(buf));
|
||||
strncpy(fbuf, fname, len);
|
||||
fbuf[len] = '\0';
|
||||
fname = fbuf;
|
||||
}
|
||||
|
||||
lua_State * L = (lua_State *)global.vm_state;
|
||||
|
|
|
@ -192,7 +192,7 @@ unit_castspell(unit& u, const char * name)
|
|||
co->familiar = NULL;
|
||||
co->force = sp->level;
|
||||
co->level = sp->level;
|
||||
co->magician = &u;
|
||||
co->magician.u = &u;
|
||||
co->order = NULL;
|
||||
co->par = NULL;
|
||||
co->rt = u.region;
|
||||
|
|
|
@ -155,6 +155,7 @@ extern "C" {
|
|||
static char * orders = NULL;
|
||||
static int nowrite = 0;
|
||||
static boolean g_writemap = false;
|
||||
static boolean g_ignore_errors = false;
|
||||
static boolean opt_reportonly = false;
|
||||
static const char * luafile = "default.lua";
|
||||
static const char * script_path = "scripts";
|
||||
|
@ -446,6 +447,7 @@ usage(const char * prog, const char * arg)
|
|||
"-R : erstellt nur die Reports neu\n"
|
||||
"--lomem : keine Messages (RAM sparen)\n"
|
||||
"--nobattle : keine Kämpfe\n"
|
||||
"--ignore-errors : ignore errors in scripts (please don\'t)\n"
|
||||
"--nomonsters : keine monster KI\n"
|
||||
"--nodebug : keine Logfiles für Kämpfe\n"
|
||||
"--noreports : absolut keine Reporte schreiben\n"
|
||||
|
@ -497,6 +499,7 @@ read_args(int argc, char **argv, lua_State * luaState)
|
|||
nocr = true;
|
||||
}
|
||||
else if (strcmp(argv[i]+2, "xml")==0) xmlfile = argv[++i];
|
||||
else if (strcmp(argv[i]+2, "ignore-errors")==0) g_ignore_errors = true;
|
||||
else if (strcmp(argv[i]+2, "dirtyload")==0) dirtyload = true;
|
||||
else if (strcmp(argv[i]+2, "nonr")==0) nonr = true;
|
||||
else if (strcmp(argv[i]+2, "nosh")==0) nosh = true;
|
||||
|
@ -610,7 +613,7 @@ my_lua_error(lua_State * L)
|
|||
|
||||
log_error(("A LUA error occured: %s\n", error));
|
||||
lua_pop(L, 1);
|
||||
std::terminate();
|
||||
if (!g_ignore_errors) std::terminate();
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -2299,6 +2299,10 @@
|
|||
<string name="REPORT">
|
||||
<text locale="de">REPORT</text>
|
||||
</string>
|
||||
<string name="XML">
|
||||
<text locale="de">XML</text>
|
||||
<text locale="en">XML</text>
|
||||
</string>
|
||||
<string name="URSPRUNG">
|
||||
<text locale="de">URSPRUNG</text>
|
||||
</string>
|
||||
|
@ -4057,7 +4061,7 @@
|
|||
<text locale="de">Schutz vor Magie</text>
|
||||
<text locale="en">Protection from Magic</text>
|
||||
</string>
|
||||
<string name="miracle_doctor">
|
||||
<string name="earn_silver#tybied">
|
||||
<text locale="de">Wunderdoktor</text>
|
||||
<text locale="en">Miracle Doctor</text>
|
||||
</string>
|
||||
|
@ -4121,7 +4125,7 @@
|
|||
<text locale="de">Regentanz</text>
|
||||
<text locale="en">Rain Dance</text>
|
||||
</string>
|
||||
<string name="jugglery">
|
||||
<string name="earn_silver#cerddor">
|
||||
<text locale="de">Gaukeleien</text>
|
||||
<text locale="en">Jugglery</text>
|
||||
</string>
|
||||
|
@ -4129,7 +4133,7 @@
|
|||
<text locale="de">Friedenslied</text>
|
||||
<text locale="en">Appeasing Song</text>
|
||||
</string>
|
||||
<string name="gwyrrdearnsilver">
|
||||
<string name="earn_silver#gwyrrd">
|
||||
<text locale="de">Viehheilung</text>
|
||||
<text locale="en">Cattle Healing</text>
|
||||
</string>
|
||||
|
@ -4305,7 +4309,7 @@
|
|||
<text locale="de">Verwünschung</text>
|
||||
<text locale="en">Hex</text>
|
||||
</string>
|
||||
<string name="draigearnsilver">
|
||||
<string name="earn_silver#draig">
|
||||
<text locale="de">Kleine Flüche</text>
|
||||
<text locale="en">Minor Curses</text>
|
||||
</string>
|
||||
|
@ -4423,7 +4427,7 @@
|
|||
<text locale="de">Traumsenden</text>
|
||||
<text locale="en">Dream</text>
|
||||
</string>
|
||||
<string name="illaunearnsilver">
|
||||
<string name="earn_silver#illaun">
|
||||
<text locale="de">Wahrsagen</text>
|
||||
<text locale="en">Divination</text>
|
||||
</string>
|
||||
|
@ -4722,7 +4726,7 @@
|
|||
spies.
|
||||
</text>
|
||||
</string>
|
||||
<string name="miracle_doctor">
|
||||
<string name="earn_silver#tybied">
|
||||
<text locale="de">
|
||||
Wenn einem der Alchemist nicht weiterhelfen kann, geht man zu dem
|
||||
gelehrten Tybiedmagier. Seine Tränke und Tinkturen helfen gegen
|
||||
|
@ -4922,7 +4926,7 @@
|
|||
enchanted will realize that they probably talked too
|
||||
much.</text>
|
||||
</string>
|
||||
<string name="jugglery">
|
||||
<string name="earn_silver#cerddor">
|
||||
<text locale="de">Cerddormagier sind _die_ Gaukler unter
|
||||
den Magiern, sie lieben es das Volk zu unterhalten und
|
||||
im Mittelpunkt zu stehen. Schon Anfänger lernen die
|
||||
|
@ -4939,7 +4943,7 @@
|
|||
the end of the week, the bard will have earned 50 silver
|
||||
per level. </text>
|
||||
</string>
|
||||
<string name="gwyrrdearnsilver">
|
||||
<string name="earn_silver#gwyrrd">
|
||||
<text locale="de">Die Fähigkeiten der Gwyrrd-Magier in
|
||||
der Viehzucht und Heilung sind bei den Bauern sehr
|
||||
begehrt. Gerade auf Märkten sind ihre Dienste häufig sehr
|
||||
|
@ -5533,7 +5537,7 @@
|
|||
subject to a harmless curse.
|
||||
</text>
|
||||
</string>
|
||||
<string name="draigearnsilver">
|
||||
<string name="earn_silver#draig">
|
||||
<text locale="de">In den dunkleren Gassen gibt es sie,
|
||||
die Flüche und Verhexungen auf Bestellung. Aber
|
||||
auch Gegenzauber hat der Jünger des Draigs
|
||||
|
@ -5990,7 +5994,7 @@
|
|||
cible du sort.
|
||||
</text>
|
||||
</string>
|
||||
<string name="illaunearnsilver">
|
||||
<string name="earn_silver#illaun">
|
||||
<text locale="fr">Personne n'interprète aussi bien les
|
||||
rêves que les mages d'Illaun. Ils sont également
|
||||
versés dans l'utilisation des objets utilisés
|
||||
|
|
|
@ -8,6 +8,11 @@
|
|||
<resource name="permaura" amount="1" cost="fixed"/>
|
||||
</spell>
|
||||
|
||||
<spell name="earn_silver#draig" type="draig" ship="true" variable="true" rank="5" level="1" index="159">
|
||||
<function name="cast" value="lua_castspell"/>
|
||||
<resource name="aura" amount="1" cost="level"/>
|
||||
</spell>
|
||||
|
||||
<spell name="create_aots" type="draig" ship="true" rank="5" level="6" index="125">
|
||||
<function name="cast" value="lua_castspell"/>
|
||||
<resource name="aura" amount="50" cost="fixed"/>
|
||||
|
@ -37,6 +42,11 @@
|
|||
<resource name="permaura" amount="1" cost="fixed"/>
|
||||
</spell>
|
||||
|
||||
<spell name="earn_silver#gwyrrd" type="gwyrrd" ship="true" variable="true" rank="5" level="1" index="159">
|
||||
<function name="cast" value="lua_castspell"/>
|
||||
<resource name="aura" amount="1" cost="level"/>
|
||||
</spell>
|
||||
|
||||
<spell name="create_aots" type="gwyrrd" ship="true" rank="5" level="6" index="124">
|
||||
<function name="cast" value="lua_castspell"/>
|
||||
<resource name="aura" amount="50" cost="fixed"/>
|
||||
|
@ -59,6 +69,11 @@
|
|||
<resource name="permaura" amount="1" cost="fixed"/>
|
||||
</spell>
|
||||
|
||||
<spell name="earn_silver#illaun" type="illaun" ship="true" variable="true" rank="5" level="1" index="159">
|
||||
<function name="cast" value="lua_castspell"/>
|
||||
<resource name="aura" amount="1" cost="level"/>
|
||||
</spell>
|
||||
|
||||
<spell name="create_aots" type="illaun" ship="true" rank="5" level="6" index="126">
|
||||
<function name="cast" value="lua_castspell"/>
|
||||
<resource name="aura" amount="50" cost="fixed"/>
|
||||
|
@ -87,6 +102,11 @@
|
|||
<resource name="permaura" amount="1" cost="fixed"/>
|
||||
</spell>
|
||||
|
||||
<spell name="earn_silver#cerddor" type="cerddor" ship="true" variable="true" rank="5" level="1" index="159">
|
||||
<function name="cast" value="lua_castspell"/>
|
||||
<resource name="aura" amount="1" cost="level"/>
|
||||
</spell>
|
||||
|
||||
<spell name="create_aots" type="cerddor" ship="true" rank="5" level="6" index="127">
|
||||
<function name="cast" value="lua_castspell"/>
|
||||
<resource name="aura" amount="50" cost="fixed"/>
|
||||
|
@ -109,6 +129,11 @@
|
|||
<resource name="permaura" amount="1" cost="fixed"/>
|
||||
</spell>
|
||||
|
||||
<spell name="earn_silver#tybied" type="tybied" ship="true" variable="true" rank="5" level="1" index="159">
|
||||
<function name="cast" value="lua_castspell"/>
|
||||
<resource name="aura" amount="1" cost="level"/>
|
||||
</spell>
|
||||
|
||||
<spell name="create_aots" type="tybied" ship="true" rank="5" level="6" index="128">
|
||||
<function name="cast" value="lua_castspell"/>
|
||||
<resource name="aura" amount="50" cost="fixed"/>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
function use_snomwan(u, amount)
|
||||
function use_snowman(u, amount)
|
||||
if u.region.terrain == "glacier" then
|
||||
local man = add_unit(u.faction, u.region)
|
||||
u.race = "snowman"
|
||||
|
|
|
@ -90,7 +90,7 @@ function create_bagofholding(r, mage, level, force)
|
|||
end
|
||||
|
||||
-- TODO:
|
||||
function earnsilver(r, mage, level, force)
|
||||
function earn_silver(r, mage, level, force)
|
||||
local money = r:get_resource("money")
|
||||
local wanted = 50 * force
|
||||
local amount = wanted
|
||||
|
@ -100,11 +100,12 @@ function earnsilver(r, mage, level, force)
|
|||
r:set_resource("money", money - amount)
|
||||
mage:add_item("money", amount)
|
||||
|
||||
msg = message("income")
|
||||
local msg = message("income")
|
||||
msg:set_unit("unit", mage)
|
||||
msg:set_region("region", r)
|
||||
msg:set_int("mode", 6)
|
||||
msg:set_int("wanted", wanted)
|
||||
msg:set_int("amount", amount)
|
||||
msg:send_faction(mage.faction)
|
||||
return level
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue