Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions area/pomoc/pomoc-p.are
Original file line number Diff line number Diff line change
Expand Up @@ -1237,6 +1237,8 @@ umiej`etno`sci. Je`sli znajdujesz si`e w pomieszczeniu, w kt`orym mo`zna `cwiczy
pokazywane s`a r`ownie`z umiej`etno`sci, kt`orych jeszcze nie znasz, ale mo`zesz
teraz wy`cwiczy`c. Umiej`etno`sci oznaczone gwiazdk`a i rozja`snione to umiej`etno`sci
wyuczone z ksi`ag, kt`orych nie mo`zesz rozwija`c inaczej ni`z poprzez u`zywanie.
Umiej`etno`sci oznaczone plusem i rozja`snione to umiej`etno`sci, do kt`orych dost`ep
zapewnia twoja rasa.

`CWICZ z argumentem powoduje wy`cwiczenie podanej umiej`etno`sci/czaru. Stopie`n
wyuczenia biegnie od 0% (nie wy`cwiczone) do 75%, a powy`zej tej granicy musisz
Expand Down
17 changes: 17 additions & 0 deletions area/pomoc/pomoc-r.are
Original file line number Diff line number Diff line change
Expand Up @@ -571,6 +571,23 @@ nie wiadomo, jakie winy wypatrz`a u ciebie i kiedy zdecyduj`a pozbawi`c ziemski
pad`o`l takiej zarazy jak ty!
~

-1 DIABELSTWO DIABELSTWA~
To niezwykle rzadka rasa ludzi z domieszk`a demoniej krwi. Diabelstwa sw`a postur`a
przypominaj`a ludzkich przodk`ow, przy czym wyr`o`znia je czerwonawa sk`ora, ogon
oraz rogi. Z natury s`a niegodziwe i dziedzicz`a sk`lonno`s`c do czynienia z`la,
cho`c zdarzaj`a si`e wyj`atki.

Diabelstwa preferuj`a diet`e zlo`zon`a z krwistego surowego mi`esa, cho`c przetworzone
potrawy mi`esne r`ownie`z s`a dnia nich akceptowalne.

Powy`zsze cechy sprawiaj`a, `ze inne rozumne rasy odnosz`a si`e do diabestw
ze strachem i wrogo`sci`a.

Diabelstwa s`a obdarzone naturaln`a zdolno`sci`a do widzenia w ciemno`sci oraz
wzmo`zon`a odporno`sci`a przeciwko obra`zeniom oraz truciznom. Demoniczna krew daje
im zdolno`s`c do otaczenia si`e ciemno`sci`a za pomoc`a czaru {?STREFA CIENIA{x.
~

0 $~

#$
4 changes: 2 additions & 2 deletions area/pomoc/pomoc-u.are
Original file line number Diff line number Diff line change
Expand Up @@ -2479,8 +2479,8 @@ b`edzie na widok nekromanty reagowa`lo strachem.
0 "STREFA CIENIA"~
Sk`ladnia: czaruj "strefa cienia"

Nekromanta mo`ze roztoczy`c wok`o`l siebie mrok tak g`esty, `ze tylko postacie
widz`ace w ciemno`sciach lub zaopatrzone w `swiat`lo b`ed`a w stanie co`s dojrze`c.
Mo`zesz roztoczy`c wok`o`l siebie mrok tak g`esty, `ze tylko postacie widz`ace
w ciemno`sciach lub zaopatrzone w `swiat`lo b`ed`a w stanie co`s dojrze`c.
~

0 "STWORZENIE MUMII"~
Expand Down
8 changes: 7 additions & 1 deletion src/act_info.c
Original file line number Diff line number Diff line change
Expand Up @@ -4156,7 +4156,7 @@ KOMENDA( do_practice )
{
sn = tss->sn;

if ( ch->pcdata->learned[ sn ] )
if ( ch->pcdata->learned[ sn ] || ( ch->race == zr_diabelstwo && skill_table[ sn ].spell_fun == spell_strefa_cienia ) )
{
if ( !bylo )
{
Expand All @@ -4178,6 +4178,12 @@ KOMENDA( do_practice )
}

if ( nie_ma
&& ch->pcdata->learned[ sn ] < 25 + 50 * ch->level / 100
&& ch->race == zr_diabelstwo && skill_table[ sn ].spell_fun == spell_strefa_cienia )
sprintf( buf, "{W%s+ %3d%%{x",
wyrownaj( skill_table[ sn ].pl_name, 19 ),
UMAX( ch->pcdata->learned[ sn ], 25 + 50 * ch->level / 100 ) );
else if ( nie_ma
&& ch->level < skill_table[ sn ].skill_level[ ch->klasa ] )
sprintf( buf, "{W%s* %3d%%{x",
wyrownaj( skill_table[ sn ].pl_name, 19 ),
Expand Down
29 changes: 21 additions & 8 deletions src/const.c
Original file line number Diff line number Diff line change
Expand Up @@ -490,7 +490,7 @@ const struct race_type race_table [ MAX_RACE ] =
ODD_POWIETRZEM, POR_LAD,
4, 320, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, "pi`e`s`c", 2,
"Githyanki Vampire Werewolf Mindflayer",
"Githyanki Vampire Werewolf Mindflayer Tiefling",
"", "",
WRL_HS, PAPU_DOWOLNE,
P_HS, 0
Expand All @@ -503,7 +503,7 @@ const struct race_type race_table [ MAX_RACE ] =
ODD_POWIETRZEM, POR_LAD,
4, 240, -2, 3, 2, 1, -2,
0, 4, 0, 0, 0, "pi`e`s`c", 2,
"Drow Ogre Orc Kobold Troll Hobgoblin Dragon Vampire Werewolf Goblin Halfkobold Duergar",
"Drow Ogre Orc Kobold Troll Hobgoblin Dragon Vampire Werewolf Goblin Halfkobold Duergar Tiefling",
"", "",
WRL_HS, PAPU_DOWOLNE,
P_HS, 0
Expand All @@ -515,7 +515,7 @@ const struct race_type race_table [ MAX_RACE ] =
ODD_POWIETRZEM, POR_LAD,
4, 280, 0, 2, 1, 0, -1,
0, 2, 0, 0, 0, "pi`e`s`c", 2,
"Drow Ogre Orc Kobold Troll Hobgoblin Dragon Vampire Werewolf Goblin Duergar",
"Drow Ogre Orc Kobold Troll Hobgoblin Dragon Vampire Werewolf Goblin Duergar Tiefling",
"", "",
WRL_HS, PAPU_DOWOLNE,
P_HS, 0
Expand All @@ -528,7 +528,7 @@ const struct race_type race_table [ MAX_RACE ] =
ODD_POWIETRZEM, POR_LAD,
4, 240, -1, 1, 2, 1, 0,
0, 4, 0, 0, 0, "pi`e`s`c", 2,
"Elf Halfelf Hobbit Githyanki Vampire Werewolf Duergar",
"Elf Halfelf Hobbit Githyanki Vampire Werewolf Duergar Tiefling",
"", "",
WRL_HS, PAPU_DOWOLNE,
P_HS, 0
Expand All @@ -541,7 +541,7 @@ const struct race_type race_table [ MAX_RACE ] =
ODD_POWIETRZEM, POR_LAD,
3, 320, 2, 0, 0, -1, 1,
0, 0, 0, 0, 1, "pi`e`s`c", 2,
"Giant Ogre Orc Kobold Minotaur Troll Hobgoblin Dragon Vampire Werewolf Goblin Halfkobold",
"Giant Ogre Orc Kobold Minotaur Troll Hobgoblin Dragon Vampire Werewolf Goblin Halfkobold Tiefling",
"", "",
WRL_HS, PAPU_DOWOLNE,
P_HS, 0
Expand All @@ -553,7 +553,7 @@ const struct race_type race_table [ MAX_RACE ] =
ODD_POWIETRZEM, POR_LAD,
3, 320, 1, 0, 0, 0, 1,
0, 0, 0, 0, 0, "pi`e`s`c", 2,
"Giant Ogre Orc Kobold Minotaur Troll Hobgoblin Dragon Vampire Werewolf Goblin",
"Giant Ogre Orc Kobold Minotaur Troll Hobgoblin Dragon Vampire Werewolf Goblin Tiefling",
"", "",
WRL_HS, PAPU_DOWOLNE,
P_HS, 0
Expand All @@ -566,7 +566,7 @@ const struct race_type race_table [ MAX_RACE ] =
ODD_POWIETRZEM, POR_LAD,
3, 240, 0, 1, 0, 3, -1,
0, 0, 0, 0, 0, "pi`e`s`c", 2,
"Giant Ogre Orc Kobold Minotaur Troll Hobgoblin Dragon Vampire Werewolf Goblin Halfkobold",
"Giant Ogre Orc Kobold Minotaur Troll Hobgoblin Dragon Vampire Werewolf Goblin Halfkobold Tiefling",
"", "",
WRL_STOPY, PAPU_DOWOLNE,
P_HS, 0
Expand All @@ -578,7 +578,7 @@ const struct race_type race_table [ MAX_RACE ] =
ODD_POWIETRZEM, POR_LAD,
3, 240, -1, 1, 1, 2, -1,
0, 4, 0, 0, 0, "pi`e`s`c", 2,
"Drow Ogre Orc Kobold Troll Hobgoblin Dragon Vampire Werewolf Goblin Duergar",
"Drow Ogre Orc Kobold Troll Hobgoblin Dragon Vampire Werewolf Goblin Duergar Tiefling",
"", "",
WRL_HS, PAPU_DOWOLNE,
P_HS, 0
Expand Down Expand Up @@ -924,6 +924,19 @@ const struct race_type race_table [ MAX_RACE ] =
P_FLAKI | P_GLOWA | P_RECE | P_NOGI | P_SERCE | P_JEZYK | P_ZAB, 0
},

{ "diabelstwo", "diabelstwa", "diabelstwu", "diabelstwo", "diabelstwem",
"diabelstwie", "diabelstwo", "diabelstwo", "tiefling",
RACE_INFRAVISION | RACE_WEAPON_WIELD | RACE_OPENS_DOORS
| RACE_PROTECTION | RACE_POISONIMM | RACE_CASTER,
ODD_POWIETRZEM, POR_LAD,
4, 320, -1, 2, 0, 0, 0,
0, 4, 0, 0, 0, "pi`e`s`c", 2,
"Githyanki Vampire Werewolf Mindflayer",
"", "",
WRL_GLOWA, PAPU_MIESNE,
P_HS | P_OGON | P_ROG, &zr_diabelstwo
},

{ "przedmiot", "przedmiotu", "przedmiotowi", "przedmiot", "przedmiotem",
"przedmiocie", "przedmiocie", "przedmiot", "object",
RACE_MUTE | RACE_NO_MOUTH | RACE_POISONIMM | RACE_NO_BLOOD
Expand Down
1 change: 1 addition & 0 deletions src/db.c
Original file line number Diff line number Diff line change
Expand Up @@ -357,6 +357,7 @@ int gsn_teleport;
*/
int zr_bog;
int zr_byk;
int zr_diabelstwo;
int zr_harpia;
int zr_jednorozec;
int zr_jez;
Expand Down
15 changes: 11 additions & 4 deletions src/magic.c
Original file line number Diff line number Diff line change
Expand Up @@ -225,8 +225,10 @@ KOMENDA( do_cast )
char arg2[ MAX_INPUT_LENGTH ];
int mana;
int sn;
int learned;

if ( !IS_NPC( ch ) && !class_table[ ch->klasa ].fMana && ch->level < L_APP )
if ( !IS_NPC( ch ) && !class_table[ ch->klasa ].fMana
&& ch->level < L_APP && !IS_SET( race_table[ ch->race ].race_abilities, RACE_CASTER ) )
{
send_to_char( "Nie znasz si`e na czarowaniu.\n\r", ch );
return;
Expand All @@ -244,14 +246,19 @@ KOMENDA( do_cast )
return;
}

sn = skill_lookup_pl( arg1 );
learned = UMAX(
!IS_NPC( ch ) ? ch->pcdata->learned[ sn ] : 0,
ch->race == zr_diabelstwo && skill_table[ sn ].spell_fun == spell_strefa_cienia ? 25 + 50 * ch->level / 100 : 0 );

/* Lam: zabezpieczenie przed reserved: */
if ( ( sn = skill_lookup_pl( arg1 ) ) < 1
|| !skill_table[ sn ].spell_fun /* to umiejetnosc, a nie czar */
|| skill_table[ sn ].spell_fun == spell_null
|| ( !IS_NPC( ch )
&& ch->level < skill_table[ sn ].skill_level[ ch->klasa ]
&& ch->level < skill_table[ sn ].multi_level[ ch->klasa ]
&& !ch->pcdata->learned[ sn ] ) )
&& !learned ) )
{
send_to_char( "Nie mo`zesz tego zrobi`c.\n\r", ch );
return;
Expand All @@ -260,7 +267,7 @@ KOMENDA( do_cast )
if ( !IS_NPC( ch )
&& ch->level < skill_table[ sn ].skill_level[ ch->klasa ]
&& !ma_w_multi( ch, sn )
&& !ch->pcdata->learned[ sn ] )
&& !learned )
{
send_to_char( "Nie mo`zesz tego zrobi`c.\n\r", ch );
return;
Expand Down Expand Up @@ -442,7 +449,7 @@ KOMENDA( do_cast )
target_name = argument;

if ( !IS_NPC( ch )
&& ( number_percent( ) > ch->pcdata->learned[ sn ]
&& ( number_percent( ) > learned
|| ( IS_AFFECTED( ch, AFF_DEZORIENTACJA )
&& number_percent( ) > 80 ) ) )
{
Expand Down
7 changes: 7 additions & 0 deletions src/merc.h
Original file line number Diff line number Diff line change
Expand Up @@ -1402,6 +1402,7 @@ struct czesc_ciala
#define RACE_BEZ_WECHU b23 /* Lam */
#define RACE_WOLI_LATAC b24 /* Lam */
#define RACE_WOLI_PLYWAC b25 /* Lam */
#define RACE_CASTER b26 /* Ulryk: przedstawiciele rasy potrafia czarowac */

/* oddychanie */
#define ODD_POWIETRZEM b01
Expand Down Expand Up @@ -2989,6 +2990,12 @@ extern int gsn_swiety_msciciel;
*/
extern int zr_bog;
extern int zr_byk;
/*
* W przypadku rozpowszechnienia wsparcia dla czarow rasowych
* nalezy uwzglednic dedykowana strukture w race_type
* Ulryk 28.02.25
*/
extern int zr_diabelstwo;
extern int zr_harpia;
extern int zr_jednorozec;
extern int zr_jez;
Expand Down
2 changes: 1 addition & 1 deletion src/update.c
Original file line number Diff line number Diff line change
Expand Up @@ -296,7 +296,7 @@ void uzyj( CHAR_DATA *ch, int sn, const char *co )
if ( IS_NPC( ch ) )
return;

if ( ch->pcdata->learned[ sn ] >= 100 )
if ( !ch->pcdata->learned[ sn ] || ch->pcdata->learned[ sn ] >= 100 )
return;

++ch->pcdata->used[ sn ];
Expand Down