Skip to content

Commit

Permalink
-Added the roomvnum command, allowing players to get the room vnum fo…
Browse files Browse the repository at this point in the history
…r the room they're in.

-Changed autoblast command to assistblast, and added the autoblast toggle so that warlocks don't have to use the blast command to commence using their eldritch blast in place of regular attacks.
-Added more prominent display for characters who are flagged non-roleplayers, when seen in room. This is to alert role players in that room that this person is not a role player.
-Added background archtypes. Each archtype gives a bonus to two skills, and a new ability. The archtypes are: Acolyte, Charlatan, Criminal/Spy, Entertainer, Folk Hero, Gladiator, Hermit, Noble, Outlander, Pirate, Sage, Sailor, Soldier, Squire, Trader and Urchin.
-Characters can now choose their character's age from the following list: adolescent, adult, middle-aged, old-aged, venerable. Age is no longer tracked mechanically as a number, but rather as the listed descriptions instead, and does not change except through role-playing. Each age has certain ability score modifiers, except adult, which is +0 at all ability scores.
-Added the postcombatbrief toggle, which will reduce the amount of post-combat text to cut down on text-spam.
-Turn undead, when used on players, will now deal damage instead of causing them to flee or being insta-killed with large level differentials between player and mob.
-Fixed a bug with paladin mercies that would sometimes crash the game.
-Blackguards now get a series of class abilities that improve the save DCs on their cruetly uses. They also now get a mount they can summon with the 'call mount' command.
-Made adjustments to the skill list. Some skills were combined, some new ones added, and some were renamed.
-Adjusted the lore command to perform a d20 roll and also use different lore skills depending on what is being identified (Arcana, Religion or Nature).
-Removed Ascii art on copyover.
-Scythes are now slashing weapons only. Previously they were slashing and piercing.
-Added character age to a character's short description.
-Swapped out Great Int for Great Charisma for Sorcerer epic class feats.
-Added a new game menu for setting optional character details. Among these are: short description, detailed description, background story, background archtype, character goals, character personality, character ideals, character bonds, character flaws, character age, homeland, hometown, faction, and deity.
-New characters will now be prompted to flag themselves as non role players or role players, or defer the decision to later (which can be done in the prefedit menu).
-Reduced exp gained by summoners for damage dealt by their eidolons in combat.
-Fixed Anti-Neutral object flag to no longer exclude NG and NE alignments.
-Added background descriptions to the help system.
-kill command is now just an alias for the hit command.
-Added the 'rpsheet' command which will display information pertinent to role playing for that character. Staff members can view the rpsheets of other players.
-Fixed a bug with the holy aura command that caused crashes sometimes.
-Fixed a bug with 'see the unseen' warlock spell that prevented it from working correctly.
-Players casting healing spells on undead group members will no longer damage them.
-Fixed some bugs with extra descs on some items causing crashes when their owners enter the game.
-Fixed cooldown on the summoner 'merge forms' ability.
-Coded in the mob ability 'corruption'
-Smite Evil/Good/Destruction will all offer bonuses regardless of alignment, with greater bonuses if used against the listed alignment.
  • Loading branch information
GickerLDS committed Oct 22, 2024
1 parent f602e8d commit 7ff19a3
Show file tree
Hide file tree
Showing 42 changed files with 3,751 additions and 456 deletions.
7 changes: 7 additions & 0 deletions act.comm.c
Original file line number Diff line number Diff line change
Expand Up @@ -881,6 +881,13 @@ ACMDU(do_gen_comm)
case CON_QALIGN:
case CON_QRACE_HELP:
case CON_PLR_BG:
case CON_CHARACTER_GOALS_ENTER:
case CON_CHARACTER_GOALS_IDEAS:
case CON_CHARACTER_PERSONALITY_ENTER:
case CON_CHARACTER_PERSONALITY_IDEAS:
case CON_CHAR_RP_MENU:
case CON_BACKGROUND_ARCHTYPE:
case CON_BACKGROUND_ARCHTYPE_CONFIRM:
continue;
}

Expand Down
5 changes: 4 additions & 1 deletion act.h
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,7 @@ ACMD_DECL(do_slayer);
ACMD_DECL(do_true_judgement);
ACMD_DECL(do_flightlist);
ACMD_DECL(do_kapak_saliva);
ACMD_DECL(do_roomvnum);

int max_judgements_active(struct char_data *ch);
int num_judgements_active(struct char_data *ch);
Expand Down Expand Up @@ -485,7 +486,7 @@ ACMD_DECL(do_fire);
ACMD_DECL(do_aura_of_vengeance);
ACMD_DECL(do_aura_of_justice);
ACMD_DECL(do_reload);
ACMD_DECL(do_autoblast);
ACMD_DECL(do_assistblast);
ACMD_DECL(do_autofire);
ACMD_DECL(do_collect);
ACMD_DECL(do_hitall);
Expand Down Expand Up @@ -753,6 +754,8 @@ ACMD_DECL(do_buildwalk);
#define SCMD_AUTOSTORE 59
#define SCMD_AUTOGROUP 60
#define SCMD_CONTAIN_AOES 61
#define SCMD_POST_COMBAT_BRIEF 62
#define SCMD_AUTO_BLAST 63

/* do_quit */
ACMD_DECL(do_quit);
Expand Down
32 changes: 28 additions & 4 deletions act.informative.c
Original file line number Diff line number Diff line change
Expand Up @@ -831,6 +831,8 @@ static void list_one_char(struct char_data *i, struct char_data *ch)
else
send_to_char(ch, "\ty%s\r\n", i->player.long_descr);

if (PRF_FLAGGED(i, PRF_NON_ROLEPLAYER))
act("...$e is a non-roleplayer.", FALSE, i, 0, ch, TO_VICT);
if (AFF_FLAGGED(i, AFF_SANCTUARY))
act("...$e glows with a bright light!", FALSE, i, 0, ch, TO_VICT);
if (affected_by_spell(i, SPELL_BANISHING_BLADE))
Expand Down Expand Up @@ -887,6 +889,8 @@ static void list_one_char(struct char_data *i, struct char_data *ch)

send_to_char(ch, "%s", i->player.long_descr);

if (PRF_FLAGGED(i, PRF_NON_ROLEPLAYER))
act("...$e is a non-roleplayer.", FALSE, i, 0, ch, TO_VICT);
if (AFF_FLAGGED(i, AFF_SANCTUARY))
act("...$e glows with a bright light!", FALSE, i, 0, ch, TO_VICT);
if (affected_by_spell(i, SPELL_BANISHING_BLADE))
Expand Down Expand Up @@ -1044,10 +1048,12 @@ static void list_one_char(struct char_data *i, struct char_data *ch)
/* CARRIER RETURN! */
send_to_char(ch, "\r\n");

if (PRF_FLAGGED(i, PRF_NON_ROLEPLAYER))
act("...$e is a non-roleplayer.", FALSE, i, 0, ch, TO_VICT);
if (AFF_FLAGGED(i, AFF_SANCTUARY))
act("...$e glows with a bright light!", FALSE, i, 0, ch, TO_VICT);
if (affected_by_spell(i, SPELL_BANISHING_BLADE))
act("...a green blade of pure energy dances at $s side!", FALSE, i, 0, ch, TO_VICT);
if (affected_by_spell(i, SPELL_BANISHING_BLADE))
act("...a green blade of pure energy dances at $s side!", FALSE, i, 0, ch, TO_VICT);
if (affected_by_spell(i, SPELL_GREATER_BLACK_TENTACLES))
act("...$e is being curshed by huge, black tentacles sprouting from the ground!", FALSE, i, 0, ch, TO_VICT);
else if (affected_by_spell(i, SPELL_BLACK_TENTACLES))
Expand Down Expand Up @@ -2083,6 +2089,8 @@ void perform_cooldowns(struct char_data *ch, struct char_data *k)
send_to_char(ch, "Aura of Terror Immunity - Duration: %d seconds\r\n", ch->char_specials.terror_cooldown * 6);
if (GET_FORAGE_COOLDOWN(k) > 0)
send_to_char(ch, "Forage - Duration: %d seconds\r\n", GET_FORAGE_COOLDOWN(k) * 6);
if (GET_RETAINER_COOLDOWN(k) > 0)
send_to_char(ch, "Call Retainer - Duration: %d seconds\r\n", GET_RETAINER_COOLDOWN(k) * 6);

list_item_activate_ability_cooldowns(ch);

Expand Down Expand Up @@ -2197,6 +2205,8 @@ void perform_resistances(struct char_data *ch, struct char_data *k)
}
}
}
if (dr->max_damage > 0)
send_to_char(ch, " %d damage left", dr->max_damage);
send_to_char(ch, "\r\n");
dr = dr->next;
}
Expand Down Expand Up @@ -3351,8 +3361,8 @@ ACMD(do_score)
snprintf(dname, sizeof(dname), "%s", deity_list[GET_DEITY(ch)].name);
send_to_char(ch, "\tcDeity: \tn%-20s ", CAP(dname));
send_to_char(ch, "\tcAlignment : \tn%s (%d)\r\n", get_align_by_num(GET_ALIGNMENT(ch)), GET_ALIGNMENT(ch));
send_to_char(ch, "\tcAge : \tn%-3d \tcyrs / \tn%2d \tcmths \tcPlayed : \tn%d days / %d hrs\r\n",
age(ch)->year, age(ch)->month, playing_time.day, playing_time.hours);
send_to_char(ch, "\tcAge : \tn%-10s \tcPlayed : \tn%d days / %d hrs\r\n",
character_ages[GET_CH_AGE(ch)], playing_time.day, playing_time.hours);
send_to_char(ch, "\tcSize : \tn%-20s \tcLoad : \tn%d\tc/\tn%d \tclbs \tcNum Items: \tn%d\tc/\tn%d \tn\r\n",
size_names[GET_SIZE(ch)], IS_CARRYING_W(ch), CAN_CARRY_W(ch), IS_CARRYING_N(ch), CAN_CARRY_N(ch));

Expand Down Expand Up @@ -4335,6 +4345,8 @@ ACMD(do_who)
send_to_char(ch, " (THIEF)");
if (PLR_FLAGGED(tch, PLR_KILLER))
send_to_char(ch, " (KILLER)");
if (PRF_FLAGGED(tch, PRF_NON_ROLEPLAYER))
send_to_char(ch, " (NoRP)");
send_to_char(ch, "\r\n");
}
}
Expand Down Expand Up @@ -7363,6 +7375,18 @@ void list_item_activate_ability_cooldowns(struct char_data *ch)
}
}

ACMD(do_roomvnum)
{
if (IN_ROOM(ch) == NOWHERE)
{
send_to_char(ch, "Error. Please tell staff ERRVNUMROOM001\r\n");
return;
}

send_to_char(ch, "This room's vnum is %d.\r\n", world[IN_ROOM(ch)].number);
return;
}

#undef WPT_SIMPLE
#undef WPT_MARTIAL
#undef WPT_EXOTIC
Expand Down
74 changes: 55 additions & 19 deletions act.item.c
Original file line number Diff line number Diff line change
Expand Up @@ -2101,12 +2101,16 @@ static void get_check_money(struct char_data *ch, struct obj_data *obj)

extract_obj(obj);

ch->char_specials.post_combat_gold = value;
increase_gold(ch, value);

if (value == 1)
send_to_char(ch, "There was 1 coin.\r\n");
else
send_to_char(ch, "There were %d coins.\r\n", value);
if (!ch->char_specials.post_combat_messages)
{
if (value == 1)
send_to_char(ch, "There was 1 coin.\r\n");
else
send_to_char(ch, "There were %d coins.\r\n", value);
}
}

static void perform_get_from_container(struct char_data *ch, struct obj_data *obj,
Expand All @@ -2115,6 +2119,7 @@ static void perform_get_from_container(struct char_data *ch, struct obj_data *ob
bool is_corpse = FALSE, is_clan = FALSE;
int ct = 0;
char buf[MAX_INPUT_LENGTH] = {'\0'};
struct char_data *tch;

if ((GET_OBJ_BOUND_ID(cont) != NOBODY) && (GET_OBJ_BOUND_ID(cont) != GET_IDNUM(ch)))
{
Expand Down Expand Up @@ -2163,8 +2168,15 @@ static void perform_get_from_container(struct char_data *ch, struct obj_data *ob
}
}

act("You get $p from $P.", FALSE, ch, obj, cont, TO_CHAR);
act("$n gets $p from $P.", TRUE, ch, obj, cont, TO_ROOM);
if (!ch->char_specials.post_combat_messages || GET_OBJ_TYPE(obj) != ITEM_MONEY)
act("You get $p from $P.", FALSE, ch, obj, cont, TO_CHAR);
for (tch = world[IN_ROOM(ch)].people; tch; tch = tch->next_in_room)
{
if (tch == ch) continue;
if (tch->char_specials.post_combat_messages && GET_OBJ_TYPE(obj) == ITEM_MONEY) continue;
snprintf(buf, sizeof(buf), "$n gets $p from %s.", cont->short_description);
act(buf, TRUE, ch, obj, tch, TO_VICT);
}
get_check_money(ch, obj);
if (cont->carried_by != ch)
{
Expand Down Expand Up @@ -2233,8 +2245,11 @@ void get_from_container(struct char_data *ch, struct obj_data *cont,
if (!found)
{
if (obj_dotmode == FIND_ALL)
act("$p seems to be empty.", FALSE, ch, cont, 0, TO_CHAR);
else
{
if (!ch->char_specials.post_combat_messages)
act("$p seems to be empty.", FALSE, ch, cont, 0, TO_CHAR);
}
else if (!ch->char_specials.post_combat_messages)
{
char buf[MAX_STRING_LENGTH] = {'\0'};

Expand Down Expand Up @@ -2316,7 +2331,7 @@ static void get_from_room(struct char_data *ch, char *arg, int howmany)
{
if (dotmode == FIND_ALL)
send_to_char(ch, "There doesn't seem to be anything here.\r\n");
else
else if (!ch->char_specials.post_combat_messages)
send_to_char(ch, "You don't see any %ss here.\r\n", arg);
}
}
Expand Down Expand Up @@ -4465,6 +4480,7 @@ ACMD(do_sac)
{
char arg[MAX_INPUT_LENGTH] = {'\0'};
struct obj_data *j, *jj, *next_thing2;
struct char_data *tch;

one_argument(argument, arg, sizeof(arg));

Expand Down Expand Up @@ -4498,36 +4514,57 @@ ACMD(do_sac)
return;
}

act("$n sacrifices $p.", FALSE, ch, j, 0, TO_ROOM);
if (IN_ROOM(ch) != NOWHERE)
{
for (tch = world[IN_ROOM(ch)].people; tch; tch = tch->next_in_room)
{
if (tch == ch) continue;
if (tch->char_specials.post_combat_messages) continue;
act("$n sacrifices $p.", FALSE, ch, j, tch, TO_VICT);
}
}

switch (rand_number(0, 5))
{
case 0:
send_to_char(ch, "You sacrifice %s to the gods.\r\nYou receive one gold coin for your humility.\r\n", GET_OBJ_SHORT(j));
if (!ch->char_specials.post_combat_messages)
send_to_char(ch, "You sacrifice %s to the gods.\r\nYou receive one gold coin for your humility.\r\n", GET_OBJ_SHORT(j));
ch->char_specials.post_combat_gold += 1;
increase_gold(ch, 1);
break;
case 1:
send_to_char(ch, "You sacrifice %s to the gods.\r\nThe gods ignore your sacrifice.\r\n", GET_OBJ_SHORT(j));
if (!ch->char_specials.post_combat_messages)
send_to_char(ch, "You sacrifice %s to the gods.\r\nThe gods ignore your sacrifice.\r\n", GET_OBJ_SHORT(j));
break;
case 2:
send_to_char(ch, "You sacrifice %s to the gods.\r\nThe gods give you %d experience points.\r\n", GET_OBJ_SHORT(j), (GET_OBJ_COST(j)));
if (!ch->char_specials.post_combat_messages)
send_to_char(ch, "You sacrifice %s to the gods.\r\nThe gods give you %d experience points.\r\n", GET_OBJ_SHORT(j), (GET_OBJ_COST(j)));
ch->char_specials.post_combat_exp += GET_OBJ_COST(j);
GET_EXP(ch) += (GET_OBJ_COST(j));
break;
case 3:
send_to_char(ch, "You sacrifice %s to the gods.\r\nYou receive %d experience points.\r\n", GET_OBJ_SHORT(j), GET_OBJ_COST(j) / 2);
if (!ch->char_specials.post_combat_messages)
send_to_char(ch, "You sacrifice %s to the gods.\r\nYou receive %d experience points.\r\n", GET_OBJ_SHORT(j), GET_OBJ_COST(j) / 2);
ch->char_specials.post_combat_exp += GET_OBJ_COST(j) / 2;
GET_EXP(ch) += GET_OBJ_COST(j) / 2;
break;
case 4:
send_to_char(ch, "Your sacrifice to the gods is rewarded with %d gold coins.\r\n", GET_OBJ_COST(j) / 4);
if (!ch->char_specials.post_combat_messages)
send_to_char(ch, "Your sacrifice to the gods is rewarded with %d gold coins.\r\n", GET_OBJ_COST(j) / 4);
ch->char_specials.post_combat_exp += GET_OBJ_COST(j) / 4;
increase_gold(ch, GET_OBJ_COST(j) / 4);
break;
case 5:
send_to_char(ch, "Your sacrifice to the gods is rewarded with %d gold coins\r\n", (GET_OBJ_COST(j) / 2));
if (!ch->char_specials.post_combat_messages)
send_to_char(ch, "Your sacrifice to the gods is rewarded with %d gold coins\r\n", (GET_OBJ_COST(j) / 2));
increase_gold(ch, (GET_OBJ_COST(j) / 2));
ch->char_specials.post_combat_gold += GET_OBJ_COST(j) / 2;
break;
default: /* should not get here */
send_to_char(ch, "You sacrifice %s to the gods.\r\nYou receive one gold coin for your humility.\r\n", GET_OBJ_SHORT(j));
if (!ch->char_specials.post_combat_messages)
send_to_char(ch, "You sacrifice %s to the gods.\r\nYou receive one gold coin for your humility.\r\n", GET_OBJ_SHORT(j));
increase_gold(ch, 1);
ch->char_specials.post_combat_gold += 1;
break;
}
for (jj = j->contains; jj; jj = next_thing2)
Expand Down Expand Up @@ -5816,8 +5853,7 @@ ACMD(do_store)
found = true;
continue;
}
STORED_POTIONS(ch, GET_OBJ_VAL(obj, i))
++;
STORED_POTIONS(ch, GET_OBJ_VAL(obj, i))++;
send_to_char(ch, "You have stored a potion of '%s'.\r\n", spell_info[GET_OBJ_VAL(obj, i)].name);
GET_OBJ_VAL(obj, i) = 0;
}
Expand Down
13 changes: 6 additions & 7 deletions act.movement.c
Original file line number Diff line number Diff line change
Expand Up @@ -2510,7 +2510,7 @@ static void do_doorcmd(struct char_data *ch, struct obj_data *obj, int door, int

int ok_pick(struct char_data *ch, obj_vnum keynum, int pickproof, int scmd, int door)
{
int skill_lvl;
int skill_lvl, roll;
int lock_dc = 10;
// struct obj_data *tools = NULL;

Expand Down Expand Up @@ -2558,10 +2558,7 @@ int ok_pick(struct char_data *ch, obj_vnum keynum, int pickproof, int scmd, int
return (0);
}

if (FIGHTING(ch))
skill_lvl += d20(ch);
else
skill_lvl += MAX(20, d20(ch)); // take 20
roll = d20(ch);

/* thief tools */
/*
Expand Down Expand Up @@ -2589,14 +2586,15 @@ int ok_pick(struct char_data *ch, obj_vnum keynum, int pickproof, int scmd, int
{
send_to_char(ch, "It resists your attempts to pick it.\r\n");
}
else if (lock_dc <= skill_lvl)
else if (lock_dc <= (skill_lvl + roll))
{
send_to_char(ch, "Success! [%d dc vs. %d skill]\r\n", lock_dc, skill_lvl);
send_to_char(ch, "Success! [%d dc vs. %d skill + %d roll]\r\n", lock_dc, skill_lvl, roll);
USE_MOVE_ACTION(ch);
return (1);
}

/* failed */
send_to_char(ch, "Failure! [%d dc vs. %d skill + %d roll]\r\n", lock_dc, skill_lvl, roll);
USE_MOVE_ACTION(ch);
return (0);
}
Expand Down Expand Up @@ -2694,6 +2692,7 @@ ACMD(do_gen_door)
do_doorcmd(ch, obj, door, subcmd);
ch->char_specials.autodoor_message = true;
extract_key(ch, keynum);
return;
}
}
return;
Expand Down
Loading

0 comments on commit 7ff19a3

Please sign in to comment.