1 package org
.sevenchan
.dongs
.creature
3 import org
.sevenchan
.AdventureController
;
5 import org
.sevenchan
.dongs
.*;
6 import org
.sevenchan
.dongs
.bodyparts
.*;
7 import org
.sevenchan
.dongs
.items
.*;
8 import org
.sevenchan
.dongs
.screens
.*;
9 import org
.sevenchan
.dongs
.screens
.encounters
.ArachnidEncounter
;
12 * Spiderbitch, spiderbitch, does whatever a spiderbitch does...
13 * Will she suck, on a dick? Goddamnit I dunno.
14 * Watch out, here comes a spiderbitch.
16 * Based off of MGE's Arachne. Loosely, as I cannot read moonspeak.
20 public class Arachnid
extends Creature
23 registerClassAlias
("EArachnid", Arachnid
);
25 private var isPregnant
:Boolean = false;
27 public function Arachnid
(pregnant
:Boolean)
30 isPregnant
= pregnant
;
34 gender
= Gender
.FEMALE
;
37 override public function initialGenderSetup
():void
39 assholes
.push
(BodyPartRegistry
.arachnid_anus
);
41 BodyPartRegistry
.arachnid_small_eye
,BodyPartRegistry
.arachnid_small_eye
,
42 BodyPartRegistry
.arachnid_small_eye
,BodyPartRegistry
.arachnid_small_eye
,
43 BodyPartRegistry
.arachnid_small_eye
,BodyPartRegistry
.arachnid_small_eye
,
44 BodyPartRegistry
.arachnid_big_eye
,BodyPartRegistry
.arachnid_big_eye
46 this.build
= Build
.AVG
;
48 BodyPartRegistry
.arachnid_leg
,BodyPartRegistry
.arachnid_leg
,
49 BodyPartRegistry
.arachnid_leg
,BodyPartRegistry
.arachnid_leg
,
50 BodyPartRegistry
.arachnid_leg
,BodyPartRegistry
.arachnid_leg
,
51 BodyPartRegistry
.arachnid_leg
,BodyPartRegistry
.arachnid_leg
54 BodyPartRegistry
.human_arm
,
55 BodyPartRegistry
.human_arm
58 this.hair
= new Hair
("long, silky, white hair");
59 //this.gender = Gender.FEMALE;
60 this.sexualPreference
= SexualPreference
.STRAIGHT
;
64 breasts
.push
(BodyPartRegistry
.human_breast
, BodyPartRegistry
.human_breast
);
65 vaginas
.push
(BodyPartRegistry
.arachnid_vagina
);
67 inventory
= new Vector
.<Item
>();
71 balls
.push
(BodyPartRegistry
.arachnid_testicle
, BodyPartRegistry
.arachnid_testicle
);
72 for each (var t
:Testicle
in balls
)
76 inventory
.push
(new SpiderEgg
(2));
78 inventory
.push
(new SpiderVenomSac
(1));
80 var wangTemplate
:Penis
= BodyPartRegistry
.human_penis
;
81 wangTemplate
._location
= "face as a beard";
82 for (var i
:Number = 0; i
< 20; i
++)
84 dicks
.push
(wangTemplate
);
88 override public function addDick
(type
:String = "default"):Penis
90 var p
:Penis
= Penis
(BodyPartRegistry
.arachnid_penis
);
91 p
.size
= 12 + MathUtils
.rand
(0, 12);
92 p
._location
= "vagina";
97 override public function onEncounter
(ply
:Creature
):Boolean
101 ArachnidEncounter
.push
(this);
105 override public function onRape
(ply
:Creature
,rapeEncounter
:Rape
):void
107 var rapeText
:String = "";
108 if (!ply
.getExplored
("sexedArachnid"))
110 ply
.setExplored
("sexedArachnid");
112 var amtCum
:Number = 0;
113 for (var i
:int = 0; i
< ply
.balls
.length
; i
++)
115 (ply
.balls
[i
] as Testicle
).loadMult
+= 1;
116 var t
:Testicle
= ply
.balls
[i
];
117 amtCum
+= t
.loadMult
* t
.normalLoad
;
119 rapeText
= "<p>The arachnid is positively delighted, bobbing up and and down happily on her giant, plated legs. "";
120 rapeText
+= "Oh, I cannot tell you how happy this makes me!" She gushes, and hugs you, her naked breasts pressed ";
121 rapeText
+= "against your body. Her nipples are so stiff that you can count them. You embrace her upper body, as well, ";
122 rapeText
+= "with an awkwardness you have never felt before in your life.</p>";
124 rapeText
+= "<p>And then you feel her fangs dig into your neck. <i>Shit.</i> ";
125 rapeText
+= ""It'sssss all right," %CSUB% whispers in a thick accent, ";
126 rapeText
+= "a silky hand stroking your cheek softly. %CSUB% kisses the wound, a blush ";
127 rapeText
+= "slowly spreading across %POS% face as %SUB% becomes more aroused. ";
128 rapeText
+= ""You’ll be fffine, do not be worried."</p>";
130 rapeText
+= "<p>After stripping you of any clothing, %SUB% pulls webbing from %POS% abdomen ";
131 rapeText
+= "and wraps you tightly in it, sparing your nose, eyes, and your dick, and ";
132 rapeText
+= "then anchors you to the floor. Seeing your flaccid dick, %SUB% leans over ";
133 rapeText
+= "and brushes it between %POS% large breasts and licks it hungrily. When ";
134 rapeText
+= "it’s satisfiably hard, %SUB% takes a few steps forwards and %POS% body ";
135 rapeText
+= "descends, your dick disappearing into %POS% wet, needy pussy. Quietly, %SUB% ";
136 rapeText
+= "begins to repeatedly plunge you into %POS% sticky depths, and you find ";
137 rapeText
+= "yourself enjoying it, aside from the claustrophobic webbing and poison ";
138 rapeText
+= "keeping you still.</p>";
140 rapeText
+= "<p>As soon as the first wave of precum enters %POS% body, %POS% entire abdomen ";
141 rapeText
+= "begins pulsing, the powerful muscles milking your dick. %CSUB% reaches down ";
142 rapeText
+= "and pulls you tighter to %POS% body. %CSUB% bites you again, and your balls ";
143 rapeText
+= "go into overdrive, pumping more semen into %POS% thrusting body. The ";
144 rapeText
+= "pleasure is unbearable, and %POS% cunt feels amazing, despite how ";
145 rapeText
+= "terrifying the entire situation is. After a few minutes, the flow stops, ";
146 rapeText
+= "and %SUB% releases you. "Sssso ssssorry ffffor the trouble," ";
147 rapeText
+= "%SUB% apologizes, a clawed foot cutting slits into the webbing around your ";
148 rapeText
+= "arms, somehow without opening your veins. You realize that she is helping you ";
149 rapeText
+= "get lose of the webbing once the neurotoxin is gone from your body. " ";
150 rapeText
+= "Hopeffffully thissss will help..."</p>";
152 rapeText
+= "<p>%CSUB% slowly moves away. "You will ssssleeep now. I hope you ";
153 rapeText
+= "ffforgive me, and maybe we will meet again..." %CSUB% vanishes into ";
154 rapeText
+= "the underbrush, and the world fades to black as you pass out.</p>";
156 rapeText
+= "<p><b>Your semen output has increased by 1, bringing your total seminal volume to " + MathUtils
.fmtMilliLiters
(amtCum
) + ".</b></p>";
157 rapeText
+= "<p>You will now gain lust faster.</p>";
162 // TODO Sex menu if sexedArachnid == true
163 rapeText
+= "<i>[TODO: Sex menu AFTER getting dateraped by Arachnid. Soz.]</i>";
165 rapeEncounter
.setText
(rapeText
);
168 private var offered
:Boolean = false;
170 override public function combatDescr
(ply
:Creature
):String
173 var text
:String = "";
176 text
+= "<p>While exploring the area, you suddenly come across many large spiderwebs. ";
177 text
+= "You brush through them, when you hear something scuttle through the brush ";
178 text
+= "behind you. Worried, you slowly turn around, and see a beautiful woman. ";
182 text
+= "<p>The Arachnid stands in a ready stance, legs poised to move at a moment's notice, and her front legs and arms ready to lash out. ";
184 text
+= "Or at least, the top half of one atop the body of a enormous black spider, ";
185 text
+= "and if women had 8 red, gleaming eyes. ";
188 text
+= "Her abdomen seems greatly swollen, bulging with eggs. Her eyes roll crazily ";
189 text
+= " in her head, as though she has lost control of herself. A strange, sticky fluid drips";
190 text
+= " from the rear of her abdomen.";
194 text
+= "She seems sad about fighting you, considering she offered herself to you. However, she seems determined to win. Her pussy drips on the ground, and her nipples stand erect.";
195 if (ply
.getExplored
("sexedArachnid"))
196 text
+= "You aren't fooled by her sorrowful demeanor, considering one of her kind paralyzed you after you gave in to her demands.";
202 override public function getHostile
(subj
:Creature
):Boolean
204 return (gender
.hasDick
);
207 override public function getTypeName
():String
209 return (isPregnant
) ? "Pregnant Arachnid" : "Arachnid";
212 override public function onWin
(ply
:Creature
):Boolean
214 var text
:String = "<h2>YOU LOSE</h2>";
216 if (ply
.gender
.hasDick
&& gender
== Gender
.FEMALE
)
218 if (ply
.getExplored
("lostToArachnid"))
219 ply
.setExplored
("lostToArachnid");
221 var amtCum
:Number = 0;
222 for (var i
:int = 0; i
< ply
.balls
.length
; i
++)
224 (ply
.balls
[i
] as Testicle
).loadMult
+= 1;
225 var t
:Testicle
= ply
.balls
[i
];
226 amtCum
+= t
.loadMult
* t
.normalLoad
;
228 text
+= "<p>Seeing weakness, the Arachnid surges forward and bites your neck. You ";
229 text
+= "punch %POS% in %POS% own neck, causing %POS% to break from you, but it’s too ";
230 text
+= "late. Neurotoxins surge through your veins, and your attacks become ";
231 text
+= "increasingly feeble as you fight. A sad smile crosses %POS% face as you ";
232 text
+= "sink to the ground, becoming increasingly numb and %SUB% moves closer, ";
233 text
+= "pulling you up to %POS% chest to caress your limp body. "Yessss, now ";
234 text
+= "you see it is uselesssss to fight." %CSUB% whispers in a thick accent, ";
235 text
+= "a silky hand stroking your cheek softly. %CSUB% kisses the wound, a blush ";
236 text
+= "slowly spreading across %POS% face as %SUB% becomes more aroused. ";
237 text
+= ""You’ll be fffine, do not be worried."</p>";
239 text
+= "<p>After stripping you of any clothing, %SUB% pulls webbing from %POS% abdomen ";
240 text
+= "and wraps you tightly in it, sparing your nose, eyes, and your dick, and ";
241 text
+= "then anchors you to the floor. Seeing your flaccid dick, %SUB% leans over ";
242 text
+= "and brushes it between %POS% large breasts and licks it hungrily. When ";
243 text
+= "it’s satisfiably hard, %SUB% takes a few steps forwards and %POS% body ";
244 text
+= "descends, your dick disappearing into %POS% wet, needy pussy. Quietly, %SUB% ";
245 text
+= "begins to repeatedly plunge you into %POS% sticky depths, and you find ";
246 text
+= "yourself enjoying it, aside from the claustrophobic webbing and poison ";
247 text
+= "keeping you still.</p>";
249 text
+= "<p>As soon as the first wave of precum enters %POS% body, %POS% entire abdomen ";
250 text
+= "begins pulsing, the powerful muscles milking your dick. %CSUB% reaches down ";
251 text
+= "and pulls you tighter to %POS% body. %CSUB% bites you again, and your balls ";
252 text
+= "go into overdrive, pumping more semen into %POS% thrusting body. The ";
253 text
+= "pleasure is unbearable, and %POS% cunt feels amazing, despite how ";
254 text
+= "terrifying the entire situation is. After a few minutes, the flow stops, ";
255 text
+= "and %SUB% releases you. "Sssso ssssorry ffffor the trouble," ";
256 text
+= "%SUB% apologizes, a clawed foot cutting slits into the webbing around your ";
257 text
+= "arms, somehow without opening your veins. You realize that she is helping you ";
258 text
+= "get lose of the webbing once the neurotoxin is gone from your body. " ";
259 text
+= "Hopeffffully thissss will help..."</p>";
261 text
+= "<p>%CSUB% slowly moves away. "You will ssssleeep now. I hope you ";
262 text
+= "ffforgive me, and maybe we will meet again..." %CSUB% vanishes into ";
263 text
+= "the underbrush, and the world fades to black as you pass out.</p>";
265 text
+= "<p><b>Your semen output has increased by 1, bringing your total seminal volume to " + MathUtils
.fmtMilliLiters
(amtCum
) + ".</b></p>";
266 text
+= "<p>You will now gain lust faster.</p>";
267 InfoScreen
.push
(gender
.doReplace
(text
));
270 else if (gender
.hasDick
)
272 var rectum
:String = (ply
.gender
.hasVag
) ? "birth canal and into your womb" : "rectum";
273 var enchTxt
:String = "";
274 var asshole
:Boolean = false;
275 text
= "<p>You collapse to the ground";
276 text
+= " once again,";
277 text
+= " defeated and exhausted. Blood drips from seemingly every part of your body, and you " + "look up at the creature through a single swollen eye. ";
280 text
+= "She isn't unscatched herself, gashes and dents mar her exoskeleton and ";
281 text
+= "humanlike upper body.";
285 text
+= "She is completely unscratched, her maniacal grin accentuating her ";
286 text
+= "complete victory."
288 text
+= "</p><p>She shivers, arching her thin upper body as a thick, ";
289 text
+= MathUtils
.inchesToFootInches
(dicks
[0].size
) + "-long cock erupts from her ";
290 text
+= "abdomen and hardens into a throbbing, swollen shaft. You stare at it in ";
291 text
+= "pure horror. She steps forward, eliciting an immediate flee reaction from ";
292 text
+= "you. It doesn't last long, as you trip over one of her long legs and are ";
293 text
+= "then pinned to the ground. You try to struggle, but you're weak and a ";
294 text
+= "pinprick at the base of your neck halts any movement.</p>";
296 text
+= "<p>You feel her lower herself down, and try to scream as she roughly slides";
297 text
+= " her ovipositor deep into your " + rectum
+ " painfully, getting thicker as it ";
298 text
+= "intrudes further, spreading you wider and wider until it hilts against her ";
299 text
+= "swollen abdomen. Her ovpositor begins swelling with eggs passing into your ";
300 text
+= "body. You can feel the leathery bags being deposited into you.</p>";
302 text
+= "<p>The pain becomes too much and, mercifully, you pass out.</p>";
304 if (!ply
.gender
.hasVag
)
306 for (idx
= 0; idx
< ply
.assholes
.length
; idx
++)
308 if ((ply
.assholes
[idx
]).pregnantWith
== null)
310 ply
.assholes
[idx
].impregnate
(balls
);
311 text
+= "<p><b>Your " + ply
.assholes
[idx
].getShortDescr
() + " is now ";
312 text
+= "pregnant.</p></b>";
319 for (idx
= 0; idx
< ply
.vaginas
.length
; idx
++)
321 if ((ply
.vaginas
[idx
]).pregnantWith
== null)
323 ply
.vaginas
[idx
].impregnate
(balls
);
324 text
+= "<p><b>Your " + ply
.vaginas
[idx
].getShortDescr
() + " is now ";
325 text
+= "pregnant.</p></b>";
330 InfoScreen
.push
(gender
.doReplace
(text
));
332 for (var ii
:int = 0; ii
< balls
.length
; ii
++)
334 var tt
:Testicle
= balls
[ii
];
335 enchTxt
+= ply
.addEnchantment
(tt
.targetFX
) + " ";