Jump to content

Exile 3 - monster hex codes for Simulacrum


cst1992

Recommended Posts

The monsters that you capture with a Soul Crystal are stored in the save file at specific locations (hex addresses 7920, 7922, 7924 and 7926) as single byte values.

There are "cheat codes" on the Internet that will tell you the codes for Erika for example, so that you could summon her in a fight if you wanted to.

But the issue there is that those codes were only about 10 or so, for the most exclusive and powerful monsters.

But the thing is, there are 256 values in a single byte. What would you get if you tried them all?

 

Well, I did, and this is the list I got. Every single monster that you can summon, right from a chicken to Rentar-Ihrno!

Use responsibly!

I've grouped in categories as much as possible, but not all related monsters are stored next to each other, unfortunately.

Also, categories are in increasing number of hex values. If you are looking for a specific hex value, the best place to look is the first one in each, 'cause it's a good chance that's the lowest value for a monster in that category.

The number in the brackets is the cost required to summon that monster (Is it always the same as the monster's level?)

Also, it's given below in Miscellaneous, but you can set the value to 5C to reset the slot to Empty.

 

Category 1: Vahnatai
00 - Vahnatai Warrior (8)
01 - Vahnatai Shaper (7)
02 - Vahnatai Shaper (7)
03 - Vahnatai Keeper (18)
05 - Vahnatai (3)
06 - Vahnatai Child (1)
07 - Vahnatai Warrior (9)
37 - Crystal Soul (28)
3C - Vahnatai Keeper (18)
3D - Vahnatai Blademaster (25)
3E - Vahnatai Lord (35)
F8 - Power Crystal (10)
F9 - Mind Crystal (30)

Category 2: Demons
04 - Hordling (5)
08 - Imp (7)
09 - Demon (20)
0A - Mung Demon (30)
0B - Haakai (35)

Category 3a: Hostile Animals and Bugs
0C - Mung Rat (3)
0E - Bat (2)
12 - Cave Rat (2)
13 - Vapor Rat (4)
28 - Worg (7)
29 - Bear (8)
2A - Giant Spider (4)
2B - Talking Spider (8)
2F - Wolf (3)
38 - Asp (5)
3F - Serpent (3)
D8 - Null Bug (12)
DE - Chitrach (12)
DF - Chitrach Larva (6)
F0 - Ursag (12)
F2 - Unicorn (3)

Category 3b: Docile Animals
2C - Cow (1)
2D - Chicken (1)
2E - Sheep (1)
30 - Lizard (1)
31 - Cat (1)
32 - Dog (1)
33 - Cave Cow (1)

Category 4: Monsters (more literally speaking)
0D - Shambler (18)
20 - Poison Fungi (7)
D9 - Giant Slug (16)
DA - Spore Beast (7)
F7 - Spiny Worm (15)

Category 5: Lizards
0F - Drake (18)
14 - Giant Lizard (4)
15 - Fire Lizard (8)
16 - Ice Lizard (8)
23 - Salamander (18)
34 - Ur-Basilisk (25)
3B - Basilisk (10)
DC - Ice Drake (22)
F6 - Drake Lord (30)

Category 6: Slimes
10 - Ice Slime (7)
11 - Viscous Goo (3)
17 - Cave Slime (3)
D0 - Emerald Slime (3)
D1 - Mauve Slime (4)
D2 - Alien Slime (14)
D6 - Amber Slime (3)
D7 - Ochre Slime (3)
DD - Ice Pudding (10)
EC - Mung Slime (7)

Category 7: High-level Foes
18 - Vampire (18)
19 - Lich (35)
27 - Doomguard (4) (Funny how it only requires 4 SP to summon, but capturing it in the first place is the real challenge; perhaps impossible).
39 - Gazer (24)
3A - Eyebeast (18)
D4 - Naga (28)
D5 - Efreet (25)
DB - Rakshasa (25)
F4 - Dark Wyrm (30)

Category 8: Undead (all, including Vahnatai undead)
1A - Hraithe (14)
1B - Vahnavoi (10)
1C - Quickghast (12)
1D - Spirit (11)
1E - Wight (10)
1F - Spectre (14)
21 - Shade (5)
22 - Deva (8)
25 - Black Shade (12)
60 - Zombie (4)
61 - Ghost (3)
62 - Ghoul (6)
63 - Ghast (8)
66 - Skeleton (3)
67 - Ruby Skeleton (10)
F3 - Slime Zombie (5)

Category 9: Humanoids, Goblins, and Ogres
24 - Gremlin (3)
71 - Ogre (7)
72 - Ogre Mage (18)
7A - Goblin (2)
7B - Goblin Fighter (5)
F1 - Gorgon (18)
F5 - Dryad (7)

Category 10a: Human Magic Users
40 - Mage (10)
41 - Wizard (25)
42 - Order Mage (35)
43 - Witch (8)
44 - Evil Acolyte (4)
45 - Evil Priest (8)
46 - Evil High Priest (20)
47 - Apprentice Mage (8)
49 - Acolyte (3)
4A - Priest (8)
4B - High Priest (20)
7C - Witch (6)

Category 10b: Human Warriors
48 - Empire Archer (28)
4C - Bladesman (20)
4D - Empire Dervish (25)
4E - Brigand (3)
4F - Archer (5)
50 - Guard (30) (This guy is more powerful than a Dervish!)
51 - Soldier (4)
52 - Captain (8)
53 - Champion (12)
78 - Monk (6)
79 - Mad Monk (12)
7F - Assassin (7)

Category 10c: Other Humans
54 - Townsperson (1)
55 - Child (1)
56 - Child (1)
57 - Beggar (1)
58 - Townsperson (1)
59 - Townsperson (1)
5A - Townsperson (1)
5B - Townsperson (1)
5D - Townsperson (1)
5E - Townsperson (1)
5F - Townsperson (1)
7D - Official (2)
7E - Official (2)

Category 11: Giants
64 - Giant Chief (28)
65 - Mutant Giant (26)
6A - Cave Giant (18)
6B - Giant Shaman (22)
C0 - Hill Giant Fighter (12)
C1 - Hill Giant Shaman (14)
C2 - Hill Giant Chief (24)
C7 - Hill Giant (10)

Category 12: Sliths
68 - Slith Archmage (12)
69 - Slith Chief (15)
6C - Slith Warrior (10)
6D - Slith Priest (8)
6E - Slith Mage (8)
6F - Slith High Priest (12)
73 - Slith (7)

Category 13: Nephilim
70 - Nephil Chief (8)
74 - Nephil (4)
75 - Nephil Warrior (6)
76 - Nephil Archer (5)
77 - Nephil Shaman (6)

Category 14: Golems
C3 - Golem of Blades (13)
FC - Fire Golem (18)
FD - Ice Golem (18)
FE - Jeweled Golem (22)
FF - Demon Golem (22)

Category 15: Troglos
C4 - Troglodyte Khazi (10)
C5 - Troglodyte Defender (12)
C6 - Troglodyte Lord (14)
C9 - Troglodyte (5)
CA - Troglodyte Warrior (8)
CB - Troglodyte Shaman (7)

Category 16: Roaches
C8 - Big Roach (4)
CC - Large Roach (6)
CD - Giant Roach (8)
CE - Mung Roach (8)
CF - Guardian Roach (10)
D3 - Cockroach (2)

Category 17: Exclusive NPCs
E0 - Elhioc (30)
E1 - Siobahn (0)
E2 - Eurydice (0)
E5 - Gunston (3)
E6 - Carol (3)
E7 - Jordan (10)
E8 - Erika (39)
E9 - Chevyn (2)
EA - Solberg (39)
EB - Prazak(c?) (4) (Just a typo, I guess)
ED - Rentar-Ihrno (38)

Category 18: Dragons
E4 - Khoth (39)
EE - Athron (39)
EF - Sulfras (39)

Category 19: Alien Beasts
FA - Alien Beast (20)
FB - Pack Leader (27)

Category 20: Miscellaneous
26 - Guardian (18)
35 - Statue (7)
36 - Living Statue (2)
5C - Default empty slot

Category 21: Bad codes. Either these spawn some unknown weird monster that does nothing or crash the game entirely.
80 - (Blank) (3)
81 - (Blank) (0)
82 - (Blank) (3)
83 - (Blank) (0)
84 - (Blank) (6)
85 - (Blank) (0)
86 - (Blank) (6)
87 - (Blank) (0)
88 - (Blank) (6)
89 - (Blank) (0)
8A - (Blank) (6)
8B - (Blank) (0)
8C - (Blank) (6)
8D - (Blank) (0)
8E - (Blank) (6)
8F - (Blank) (0)
90 - (Blank) (6)
91 - (Blank) (0)
92 - (Blank) (6)
93 - (Blank) (0)
94 - (Blank) (0)
95 - (Blank) (0)
96 - (Blank) (6)
97 - (Blank) (0)
98 - (Blank) (0)
99 - (Blank) (0)
9A - (Blank) (0)
9B - (Blank) (0)
9C - (Blank) (0)
9D - (Blank) (0)
9E - (Blank) (0)
9F - (Blank) (0)
A0 - B6 - (Crash)
B8 - (Blank) (40)
B9 - (Blank) (0)
BA - (Blank) (75)
BB - (Blank) (0)
BC - (Blank) (140) (Yes, you need 140 SP to spawn this blank monster)
BD - (Blank) (0)
BE - (Blank) (20)
BF - (Blank) (0)
E3 - (Blank) (0)
 

Edited by cst1992
Link to comment
Share on other sites

37 minutes ago, cst1992 said:

27 - Doomguard (4) (Funny how it only requires 4 SP to summon, but capturing it in the first place is the real challenge; perhaps impossible).

I believe monsters with the "splits when hit" ability are defined to be immune to Simulacrum, meaning it is in fact impossible to capture them. The same goes for monsters of type "important", which includes Erika and Rentar-Ihrno. There may be some other classes of monsters that are also immune.

Link to comment
Share on other sites

Posted (edited)

Erika, the town guards and some other monsters always say "x resists" when cast Capture Soul on, but I thought this was because of their resistance/immunity to magic.

Interesting bit about immunity to Simulacrum there. Is there a way to tell which of them are immune and which aren't?

Edited by cst1992
Link to comment
Share on other sites

I don't know of a definite way to determine which monsters are immune in Exile 3. The best I can offer is the Blades of Exile source code, which is probably the same as in Exile 3.

 

void record_monst(cCreature* which_m, bool forced) {
    short r1;
    
    r1 = get_ran(1,1,100);
    r1 = (r1 * 7) / 10;
    
    if(forced) r1 = 0;
    
    if((which_m->x_width > 1) || (which_m->y_width > 1)) {
        ASB("Capture Soul: Monster is too big.");
    }
    else if(r1 > cCreature::charm_odds[which_m->level / 2] || which_m->abil[eMonstAbil::SPLITS].active
             || which_m->m_type == eRace::IMPORTANT) {
        which_m->spell_note(10);
        play_sound(68);
    }
    else {
        which_m->spell_note(24);
        r1 = get_ran(1,0,univ.party.imprisoned_monst.size() - 1);
        if(univ.party.imprisoned_monst[r1] == 0)
            univ.party.imprisoned_monst[r1] = which_m->number;
        else {
            r1 = get_ran(1,0,3);
            univ.party.imprisoned_monst[r1] = which_m->number;
        }
        ASB("Capture Soul: Success!");
        add_string_to_buf("  Caught in slot " + std::to_string(r1 + 1) + ".");
        play_sound(53);
    }
}
	

 

You can see that monsters larger than a single space, monsters with the "splits" ability, and monsters with the "important" race are immune. It looks like those are the only conditions for immunity (in case you were wondering, the "charm_odds" is the chance of succeeding when you attempt to capture a monster that's not immune). It's worth noting that resistance or immunity to magic does not appear to be factored in at all.

 

I think the town guards actually are capturable. They're just quite hard to capture because they're high level.

Link to comment
Share on other sites

Posted (edited)

What this also tells me is that the chance to capture a monster is directly correlated to the odds of charming it. If it's hard to charm, it's hard to capture, although only half the level is considered, meaning you could technically capture a higher level of monster, by a factor of 2, than one you could charm.

 

Another thing we could learn from this code is that the RNG runs twice: once to locate a random empty slot to store, and again if that slot is taken. Personally I don't agree with this logic as it assumes either all slots are empty or all are full, meaning there's a 6% chance an existing monster could get overwritten even if the other three slots are empty.

Edited by cst1992
Link to comment
Share on other sites

And voila, here's charm_odds as CM kindly provided in a previous thread:

 

const short cCreature::charm_odds[21] = {90,90,85,80,78, 75,73,60,40,30, 20,10,4,1,0, 0,0,0,0,0, 0};

 

For Capture Soul, looks like it's auto-success through monster level 13, then it starts dropping, and becomes quite harsh above level 23.  Looks like level 27 is the absolute limit.

Link to comment
Share on other sites

Actually... wait a minute.    r1 is a short.  c++ rounds down by default.  and that's a > not a >= in the charm_odds compare.  so this means that anything above level 27 and not immune should have an exactly 1% chance to get captured, right?

Link to comment
Share on other sites

Posted (edited)

That

r1 = (r1 * 7) / 10

is bothering me.

 

If we're generating a percentage from 1 to 100 and then use that, we get a max value of 70 percent.

 

If I want to capture a Champion then the level is 12, meaning the value from charm_odds I am looking for is 73. If r1 has to be greater than this value, then I shouldn't be able to capture the Champion at all, and stronger monsters should actually be easier to capture (e.g. Guard with a level of 30 and charm_odds value of 0).

 

The code has to be different for E3 as this is not what is observed at all.

 

Another thing to note is that the get_ran function is not a library function, but something defined by the programmer. We are assuming it's an accurate RNG between a to b, but who knows exactly how it works?

Edited by cst1992
Link to comment
Share on other sites

Since the minimum value is 1, a 0 in the charm odds would mean a monster of that level can never be captured. So that would imply the level 30 guard really can't be captured?

 

…except for that calculation done on the generated value. If the generated value is 1, multiplying it by 7 and dividing by 100 would give 0, so there is a very small chance to capture a Guard?

 

As for the implementation of get_ran, it does use standard random functions inside it, though the implementation varies between the Mac version, the Windows version, and the open-source version. In the Mac version it looks like this:

 

short get_ran (short times,short  min,short  max)
{
    long int store;
    short i, to_ret = 0;
    
    for (i = 1; i < times + 1; i++) {
        store = Random();
        to_ret = to_ret + min + (((store + 32767) * (max - min + 1)) / 65536);
        }
    return to_ret;
}

 

The Random() function is part of the Macintosh Toolkit, and I don't know exactly what it does off the top of my head. However, it looks like it gives 4 bytes of precision and he's collapsing the result into 2 bytes.

 

In the Windows version, it looks like this:

 


short get_ran (short times,short  min,short  max)
{
    short store;
    short i, to_ret = 0;

    if ((max - min + 1) == 0)
        return 0;
    for (i = 1; i < times + 1; i++) {
        store = rand() % (max - min + 1);
        to_ret = to_ret + min + store;
        }
    return to_ret;
}

 

That rand() is the standard C function.

 

The open-source version is pretty much the same as the Windows version, but for some reason is missing the divide-by-zero check.

Link to comment
Share on other sites

Posted (edited)

I see, it's my mistake.

 

Okay, so levels 24 and 25 have only a 4% chance, 26 and 27 have 1% and then nothing.

It's impossible to capture the guard then?

 

About the 1% thing you mentioned, I'm thinking the exact same thing - in the case r1 comes out to 1, the 70% logic will turn it to 0, 0 > 0 will fail and the flow will go to the else block.

 

I think I'll just spam Capture Soul on the guard and see if it leads to anything. I'm not hopeful, but it might work.

Edited by cst1992
Link to comment
Share on other sites

6 minutes ago, cst1992 said:

Okay, so levels 24 and 25 have only a 4% chance, 26 and 27 have 1%

Except it's not actually a percent due to the 7/10 multiplication.  r1 needs to be <= 4 to succeed vs a level 24-25 monster, which will happen 7% of the time -- as even 49/10 rounds down to 4.  And then level 26-27 should be 2%, since a roll of 2 also rounds down to 1.  After that, as you note later, it's 1%.

Link to comment
Share on other sites

Posted (edited)

Oh yes, you're right.

Let's say we have a monster that neither splits nor is among the important monsters.

We could invert the if condition to be

r1 <= cCreature::charm_odds[which_m->level / 2]

For that, we could make a list of 100 values of r1 and corresponding levels, like so:

 

r1 =  1; (r1 * 7) / 10 =  0;       level >= 28
r1 =  2; (r1 * 7) / 10 =  1; 27 >= level >= 26
r1 =  3; (r1 * 7) / 10 =  2; 25 >= level >= 24
r1 =  4; (r1 * 7) / 10 =  2; --------"--------
r1 =  5; (r1 * 7) / 10 =  3; --------"--------
r1 =  6; (r1 * 7) / 10 =  4; --------"--------
r1 =  7; (r1 * 7) / 10 =  4; --------"-------- 
r1 =  8; (r1 * 7) / 10 =  5; 23 >= level >= 22
r1 =  9; (r1 * 7) / 10 =  6; --------"--------
r1 = 10; (r1 * 7) / 10 =  7; --------"--------
r1 = 11; (r1 * 7) / 10 =  7; --------"--------
r1 = 12; (r1 * 7) / 10 =  8; --------"--------
r1 = 13; (r1 * 7) / 10 =  9; --------"--------
r1 = 14; (r1 * 7) / 10 =  9; --------"--------
r1 = 15; (r1 * 7) / 10 = 10; --------"--------
r1 = 16; (r1 * 7) / 10 = 11; --------"--------
r1 = 17; (r1 * 7) / 10 = 11; --------"--------
r1 = 18; (r1 * 7) / 10 = 13; --------"--------
r1 = 19; (r1 * 7) / 10 = 13; --------"--------
r1 = 20; (r1 * 7) / 10 = 14; --------"--------
r1 = 21; (r1 * 7) / 10 = 14; --------"--------
r1 = 22; (r1 * 7) / 10 = 15; --------"--------
r1 = 23; (r1 * 7) / 10 = 16; --------"--------
r1 = 24; (r1 * 7) / 10 = 16; --------"--------
r1 = 25; (r1 * 7) / 10 = 17; --------"--------
r1 = 26; (r1 * 7) / 10 = 18; --------"--------
r1 = 27; (r1 * 7) / 10 = 18; --------"--------
r1 = 28; (r1 * 7) / 10 = 19; --------"--------
r1 = 29; (r1 * 7) / 10 = 20; 21 >= level >= 20
r1 = 30; (r1 * 7) / 10 = 21; --------"--------
r1 = 31; (r1 * 7) / 10 = 21; --------"--------
r1 = 32; (r1 * 7) / 10 = 22; --------"--------
r1 = 33; (r1 * 7) / 10 = 23; --------"--------
r1 = 34; (r1 * 7) / 10 = 23; --------"--------
r1 = 35; (r1 * 7) / 10 = 24; --------"--------
r1 = 36; (r1 * 7) / 10 = 25; --------"--------
r1 = 37; (r1 * 7) / 10 = 25; --------"--------
r1 = 38; (r1 * 7) / 10 = 26; --------"--------
r1 = 39; (r1 * 7) / 10 = 27; --------"--------
r1 = 40; (r1 * 7) / 10 = 28; --------"--------
r1 = 41; (r1 * 7) / 10 = 28; --------"--------
r1 = 42; (r1 * 7) / 10 = 29; --------"--------
r1 = 43; (r1 * 7) / 10 = 30; 19 >= level >= 18
r1 = 44; (r1 * 7) / 10 = 30; --------"--------
r1 = 45; (r1 * 7) / 10 = 31; --------"--------
r1 = 46; (r1 * 7) / 10 = 32; --------"--------
r1 = 47; (r1 * 7) / 10 = 32; --------"--------
r1 = 48; (r1 * 7) / 10 = 33; --------"--------
r1 = 49; (r1 * 7) / 10 = 34; --------"--------
r1 = 50; (r1 * 7) / 10 = 35; --------"--------
r1 = 51; (r1 * 7) / 10 = 35; --------"--------
r1 = 52; (r1 * 7) / 10 = 36; --------"--------
r1 = 53; (r1 * 7) / 10 = 37; --------"--------
r1 = 54; (r1 * 7) / 10 = 37; --------"--------
r1 = 55; (r1 * 7) / 10 = 38; --------"--------
r1 = 56; (r1 * 7) / 10 = 39; --------"--------
r1 = 57; (r1 * 7) / 10 = 39; --------"--------
r1 = 58; (r1 * 7) / 10 = 40; 17 >= level >= 16
r1 = 59; (r1 * 7) / 10 = 41; --------"--------
r1 = 60; (r1 * 7) / 10 = 42; --------"--------
r1 = 61; (r1 * 7) / 10 = 42; --------"--------
r1 = 62; (r1 * 7) / 10 = 43; --------"--------
r1 = 63; (r1 * 7) / 10 = 44; --------"--------
r1 = 64; (r1 * 7) / 10 = 44; --------"--------
r1 = 65; (r1 * 7) / 10 = 45; --------"--------
r1 = 66; (r1 * 7) / 10 = 46; --------"--------
r1 = 67; (r1 * 7) / 10 = 46; --------"--------
r1 = 68; (r1 * 7) / 10 = 47; --------"--------
r1 = 69; (r1 * 7) / 10 = 48; --------"--------
r1 = 70; (r1 * 7) / 10 = 49; --------"--------
r1 = 71; (r1 * 7) / 10 = 49; --------"--------
r1 = 72; (r1 * 7) / 10 = 50; --------"--------
r1 = 73; (r1 * 7) / 10 = 51; --------"--------
r1 = 74; (r1 * 7) / 10 = 51; --------"--------
r1 = 75; (r1 * 7) / 10 = 52; --------"--------
r1 = 76; (r1 * 7) / 10 = 53; --------"--------
r1 = 77; (r1 * 7) / 10 = 53; --------"--------
r1 = 78; (r1 * 7) / 10 = 54; --------"--------
r1 = 79; (r1 * 7) / 10 = 55; --------"--------
r1 = 80; (r1 * 7) / 10 = 56; --------"--------
r1 = 81; (r1 * 7) / 10 = 56; --------"--------
r1 = 82; (r1 * 7) / 10 = 57; --------"--------
r1 = 83; (r1 * 7) / 10 = 58; --------"--------
r1 = 84; (r1 * 7) / 10 = 58; --------"--------
r1 = 85; (r1 * 7) / 10 = 59; --------"--------
r1 = 86; (r1 * 7) / 10 = 60; 15 >= level >= 14
r1 = 87; (r1 * 7) / 10 = 60; --------"--------
r1 = 88; (r1 * 7) / 10 = 61; --------"--------
r1 = 89; (r1 * 7) / 10 = 62; --------"--------
r1 = 90; (r1 * 7) / 10 = 63; --------"--------
r1 = 91; (r1 * 7) / 10 = 63; --------"--------
r1 = 92; (r1 * 7) / 10 = 64; --------"--------
r1 = 93; (r1 * 7) / 10 = 64; --------"--------
r1 = 94; (r1 * 7) / 10 = 65; --------"--------
r1 = 95; (r1 * 7) / 10 = 66; --------"--------
r1 = 96; (r1 * 7) / 10 = 67; --------"--------
r1 = 97; (r1 * 7) / 10 = 67; --------"--------
r1 = 98; (r1 * 7) / 10 = 68; --------"--------
r1 = 99; (r1 * 7) / 10 = 69; --------"--------
r1 =100; (r1 * 7) / 10 = 70; --------"--------

 

So the level to percentage correlation is so:

 >= 28  1%
26, 27  2%
24, 25  7%
22, 23 28%
20, 21 42%
18, 19 57%
16, 17 85%
14, 15 100%
lower than 14 100%

 

Edited by cst1992
minor correction
Link to comment
Share on other sites

also, worth noting, although this is the same odds table that Charm and a few other effects use, they don't necessarily use the same formula with it.  I know Charm takes the caster's level into consideration, for example.  So it's not actually that charming is twice as hard or anything, it just scales very differently.

Link to comment
Share on other sites

Charming and capturing should have the same odds. Given that some monsters have very high level e.g. a dragon with level 39, you have to be able to use that value in a formula to get the odds.

Given that the charm_odds array is only 21 values meaning a max level of 41 can be taken by using half the level value in the function.

Link to comment
Share on other sites

They don't have the same odds.  They use the same lookup table in their functions (charm_odds), but there are steps taken both before (in this case, dividing the monster's level by 2) and after looking up that value (in this case, using a 0-to-70 RNG), and those steps are different for charming and for capturing, which results in different resulting odds.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...