Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pippa creation #4

Closed
wants to merge 15 commits into from
165 changes: 165 additions & 0 deletions classes/Characters/Pippa.as
@@ -0,0 +1,165 @@
package classes.Characters
{
import classes.Creature;
import classes.GLOBAL;
import classes.Items.Apparel.UGCUniform;
import classes.Items.Melee.Knife;
import classes.Items.Miscellaneous.EmptySlot;

public class Pippa extends Creature
{
//constructor
public function Pippa()
{
this._latestVersion = 1;
this.version = _latestVersion;
this._neverSerialize = false;

this.short = "Pippa";
this.originalRace = "human";
this.a = "";
this.capitalA = "";
this.long = "uncreated";
this.customDodge = "uncreated";
this.customBlock = "uncreated";
this.isPlural = false;

this.meleeWeapon = new EmptySlot();
this.armor = new EmptySlot();

this.physiqueRaw = 3;
this.reflexesRaw = 5;
this.aimRaw = 3;
this.intelligenceRaw = 6;
this.willpowerRaw = 6;
this.libidoRaw = 50;
this.shieldsRaw = 0;
this.energyRaw = 100;
this.lustRaw = 85;

this.level = 1;
this.XPRaw = normalXP();
this.credits = 0;
this.HPMod = 0;
this.HPRaw = this.HPMax();

this.femininity = 85;
this.eyeType = 0;
this.eyeColor = "hazel";
this.tallness = 66;
this.thickness = 100;
this.tone = 0;
this.hairColor = "platinum blonde";
this.scaleColor = "pink";
this.furColor = "white";
this.hairLength = 18;
this.hairType = GLOBAL.HAIR_TYPE_REGULAR;
this.hairStyle = "pigtails";
this.beardLength = 0;
this.beardStyle = 0;
this.skinType = GLOBAL.SKIN_TYPE_SKIN;
this.skinTone = "light pink";
this.skinFlags = new Array();
this.faceType = GLOBAL.TYPE_SWINE;
this.faceFlags = new Array();
this.tongueType = 0;
this.lipMod = 3;
this.earType = GLOBAL.TYPE_SWINE;
this.antennae = 0;
this.antennaeType = 0;
this.horns = 0;
this.hornType = 0;
this.armType = GLOBAL.TYPE_HUMAN;
this.gills = false;
this.wingType = 0;
this.legType = GLOBAL.TYPE_SWINE;
this.legCount = 2;
this.legFlags = [GLOBAL.FLAG_DIGITIGRADE];
//0 - Waist
//1 - Middle of a long tail. Defaults to waist on bipeds.
//2 - Between last legs or at end of long tail.
//3 - On underside of a tail, used for driders and the like, maybe?
this.genitalSpot = 0;
this.tailType = GLOBAL.TYPE_SWINE;
this.tailCount = 1;
this.tailFlags = [GLOBAL.FLAG_CORKSCREWED];
//Used to set cunt or dick type for cunt/dick tails!
this.tailGenitalArg = 0;
//tailGenital:
//0 - none.
//1 - cock
//2 - vagina
this.tailGenital = 0;
//Tail venom is a 0-100 slider used for tail attacks. Recharges per hour.
this.tailVenom = 0;
//Tail recharge determines how fast venom/webs comes back per hour.
this.tailRecharge = 5;
//hipRating
//0 - boyish
//2 - slender
//4 - average
//6 - noticable/ample
//10 - curvy//flaring
//15 - child-bearing/fertile
//20 - inhumanly wide
this.hipRatingRaw = 18;
//buttRating
//0 - buttless
//2 - tight
//4 - average
//6 - noticable
//8 - large
//10 - jiggly
//13 - expansive
//16 - huge
//20 - inconceivably large/big/huge etc
this.buttRatingRaw = 16;
this.bellyRatingRaw = 15;
//No dicks here!
this.cocks = new Array();
//balls
this.balls = 0;
this.cumMultiplierRaw = 1.5;
//Multiplicative value used for impregnation odds. 0 is infertile. Higher is better.
this.cumQualityRaw = 1;
this.cumType = GLOBAL.FLUID_TYPE_CUM;
this.ballSizeRaw = 2;
this.ballFullness = 100;
//How many "normal" orgams worth of jizz your balls can hold.
this.ballEfficiency = 4;
//Scales from 0 (never produce more) to infinity.
this.refractoryRate = 9999;
this.minutesSinceCum = 9000;
this.timesCum = 785;
this.cockVirgin = true;
this.vaginalVirgin = false;
this.analVirgin = false;
this.vaginas = new Array();
this.createVagina();
this.vaginas[0].hymen = false;
this.vaginas[0].clits = 1;
this.vaginas[0].wetnessRaw = 4;
this.vaginas[0].loosenessRaw = 2;
this.vaginas[0].bonusCapacity = 300;
this.vaginas[0].type = GLOBAL.TYPE_SWINE;
this.vaginas[0].addFlag(GLOBAL.FLAG_CORKSCREWED);
this.clitLength = 2;
this.elasticity = 1;
//Fertility is a % out of 100.
this.fertilityRaw = 1.05;
this.pregnancyMultiplierRaw = 1;

this.breastRows[0].breastRatingRaw = 29;
this.breastRows[0].nippleType = GLOBAL.NIPPLE_TYPE_INVERTED;
this.nippleColor = "brown-pink";
this.nippleLengthRatio = 1;
this.milkMultiplier = 0;
this.milkType = GLOBAL.FLUID_TYPE_MILK;
//The rate at which you produce milk. Scales from 0 to INFINITY.
this.milkRate = 0;
this.ass.wetnessRaw = 2;
this.ass.loosenessRaw = 2;
this.ass.bonusCapacity = 150;
}
}
}
58 changes: 58 additions & 0 deletions classes/Creature.as
Expand Up @@ -44,6 +44,7 @@
import classes.GameData.CodexManager;
import classes.Engine.Interfaces.AddLogEvent;
import classes.Engine.Interfaces.ExtendLogEvent;
import classes.Engine.Utility.MathUtil;

/**
* I cannot yet implement "smart" detection of which characters (or furthermore, what *properties* of which characters)
Expand Down Expand Up @@ -332,6 +333,11 @@
r.corrosive.damageValue += 10;
}

if (hasStatusEffect("Oil Warmed"))
{
r.freezing.damageValue += Math.ceil(MathUtil.LinearInterpolate(5, 15, getStatusMinutes("Oil Warmed") / 1440));
}

return r;
}

Expand Down Expand Up @@ -2824,6 +2830,7 @@
removeStatusEffect("Mare Musk");
removeStatusEffect("Cum Soaked");
removeStatusEffect("Pussy Drenched");
removeStatusEffect("Oil Warmed");
}
public function canMasturbate():Boolean
{
Expand Down Expand Up @@ -4678,6 +4685,10 @@
case GLOBAL.TYPE_FROG:
adjectives = ["amphibian", "frog-like", "dot", "hidden"];
break;
case GLOBAL.TYPE_SWINE:
adjectives = ["swine", "pig-like", "floppy"];
if(isBimbo()) adjectives.push("piggy");
break;
}
if (hasLongEars()) adjectives.push(num2Text(Math.round(earLength)) + "-inch long");
if (skinType == GLOBAL.SKIN_TYPE_GOO && rand(5) == 0) adjectives.push("gooey", "slimy", "slick");
Expand Down Expand Up @@ -5410,6 +5421,10 @@
{
return (hasFaceFlag(GLOBAL.FLAG_MUZZLED));
}
public function hasBeak():Boolean
{
return (hasFaceFlag(GLOBAL.FLAG_BEAK));
}
public function hasFur():Boolean
{
return (skinType == GLOBAL.SKIN_TYPE_FUR);
Expand Down Expand Up @@ -5572,6 +5587,7 @@
case GLOBAL.TYPE_KANGAROO: adjectives.push("kangaroo", "‘roo-like"); break;
case GLOBAL.TYPE_FROG: adjectives.push("flat", "frog-like"); break;
case GLOBAL.TYPE_AVIAN: adjectives.push("avian", "bird-like"); break;
case GLOBAL.TYPE_SWINE: adjectives.push("pig-nosed"); break;
}
if (hasFaceFlag(GLOBAL.FLAG_ANGULAR)) adjectives.push("angular");
if (hasFaceFlag(GLOBAL.FLAG_LONG)) adjectives.push("long");
Expand Down Expand Up @@ -5734,6 +5750,8 @@
case GLOBAL.TYPE_FROG:
adjectives = ["frog", "tadpole-like", "short", "nubby", "nubbed"];
break;
case GLOBAL.TYPE_SWINE:
adjectives = ["swine", "pig-like"];
}
// Flags
if (hasTailCock())
Expand Down Expand Up @@ -5777,6 +5795,8 @@
adjectives.push("slimy", "slick", "gooey");
if (hasTailFlag(GLOBAL.FLAG_STICKY))
adjectives.push("sticky");
if (hasTailFlag(GLOBAL.FLAG_CORKSCREWED))
adjectives.push("curled", "curly");

//Show adjective 50% of the time
if (rand(2) == 0 && adjectives.length > 0) description = adjectives[rand(adjectives.length)] + " ";
Expand Down Expand Up @@ -6016,6 +6036,7 @@
case GLOBAL.TYPE_MYR: adjectives = ["chitinous", "armored", scaleColor + "-armored", "chitinous"]; break;
case GLOBAL.TYPE_FROG: adjectives = ["frog", "amphibious", "frog-like", "powerful"]; break;
case GLOBAL.TYPE_NYREA: adjectives = ["chitinous", "armored", "insect-like", "carapace-covered"]; break;
case GLOBAL.TYPE_SWINE: adjectives = ["swine", "swine", "pig-like", "hoof-capped"]; break;
}
}
//ADJECTIVE!
Expand Down Expand Up @@ -9762,6 +9783,7 @@
if (orangeMyrScore() >= 9) race = "orange myr";
if (nyreaScore() >= 5) race = "nyrea";
if (plantScore() >= 5) race = plantRace();
if (pigScore() >= 4) race = "pig-morph";
// Human-morphs
if (race == "human" && cowScore() >= 4) race = mfn("cow-boy", "cow-girl", "hucow");
if (race == "human" && hradScore() >= 4) race = "hrad";
Expand Down Expand Up @@ -10477,6 +10499,21 @@
if(cyborgScore() >= numParts) return true;
return false;
}
public function pigScore():int
{
var counter:int = 0;
if (earType == GLOBAL.TYPE_SWINE) counter++;
if (faceType == GLOBAL.TYPE_SWINE) counter++;
if (legType == GLOBAL.TYPE_SWINE) counter++;
if (cockTotal(GLOBAL.TYPE_SWINE) > 0) counter++;
if (vaginaTotal(GLOBAL.TYPE_SWINE) > 0) counter++;
if (tailType == GLOBAL.TYPE_SWINE) counter++;
if (thickness >= 80) counter++;
if (skinType == GLOBAL.SKIN_TYPE_SKIN && InCollection(skinTone, "pink", "brown-pink", "red-pink", "white", "black", "gray", "brown")) counter++;
if (hasSheath()) counter++;

return counter;
}
public function sackDescript(forceAdjectives: Boolean = false, adjectives: Boolean = true): String {
var desc: String = "";
if ((adjectives && rand(3) == 0) || forceAdjectives) {
Expand Down Expand Up @@ -12163,6 +12200,7 @@
else if (type == GLOBAL.TYPE_KUITAN) desc += "kui-tan ";
else if (type == GLOBAL.TYPE_FLOWER) desc += "orchid ";
else if (type == GLOBAL.TYPE_DEER) desc += "deer ";
else if (type == GLOBAL.TYPE_SWINE) desc += "swine ";
else desc += "alien ";
var plainPussies:Array = ["vagina", "pussy"];
if(isBimbo()) plainPussies.push("cunt");
Expand Down Expand Up @@ -12309,6 +12347,13 @@
else
desc += RandomInCollection(["deer-pussy", "doe-pussy", "animal-pussy", "deer-cunt", "doe-cunt", "animal-cunt", "deer-twat", "doe-twat", "deer-slit", "doe-slit", "cunt", "gash"]);
}
else if (type == GLOBAL.TYPE_SWINE)
{
if (!simple)
desc += RandomInCollection(["pig pussy","swine slit","animalistic pussy","pig cunt","sow pussy","hog hole","hog honeypot", "ridge-lined animal pussy", "corkscrewed pig vagina","swine vagina"]);
else
desc += RandomInCollection(["pig-pussy","swine-pussy","sow-pussy","animal-pussy","swine-slit","sow-slit","pig-cunt"]);
}
else
{
if (!simple)
Expand Down Expand Up @@ -13261,6 +13306,9 @@
//adjectives.push("vanae", "alien", "suckler-tipped", "vanae", "cephalopod-like", "inhuman", "exotic");
desc += RandomInCollection(["vanae-cock","vanae-dick","vanae-prick","cock","cock","member","xeno-dick","phallus"]);
break;
case GLOBAL.TYPE_SWINE:
desc += RandomInCollection(["swine-cock","swine-schlong","pig-cock","pig-prick","hog-dick","cock","boar-dick",mf("sow-seeder","sow-schlong")]);
break;
//Basic dicks names: "cock",
case GLOBAL.TYPE_HUMAN:
//Nothing special for these two.
Expand Down Expand Up @@ -13378,6 +13426,9 @@
//adjectives.push("vanae", "alien", "suckler-tipped", "vanae", "cephalopod-like", "inhuman", "exotic");
desc += RandomInCollection(["alien cock","sucker-tipped cock","sucker-tipped dick","sucker-tipped prick","sucker-tipped cock","sucker-crowned cock","sucker-crowned dick","sucker-capped member","sucker-capped phallus","alien dick","exotic vanae-cock","exotic vanae-dick","sucker-topped prick"]);
break;
case GLOBAL.TYPE_SWINE:
desc += RandomInCollection(["swine cock","swine schlong","pig prick","corkscrew-shaped pig cock","twisted swine dick","animalistic dick","twisted prick","animalistic shaft"]);
break;
//Basic dicks names: "cock",
case GLOBAL.TYPE_HUMAN:
desc += RandomInCollection(["terran cock","human cock","human dick","terran dick","human member","terran member","terran phallus","human prick","terran tool","human shaft"]);
Expand Down Expand Up @@ -17749,6 +17800,13 @@
if(thisStatus.minutesLeft < 1) thisStatus.minutesLeft = 1;
}
break;
case "Oil Warmed":
var desc:String = "";
if(this is PlayerCharacter) desc = "You're covered in warm, protective oil!";
else desc = capitalA + short + " is covered in warm, protective oil!";
desc += "\nFreeze Resistance: +" + Math.ceil(MathUtil.LinearInterpolate(5, 15, getStatusMinutes("Oil Warmed") / 1440)) + "%";
setStatusTooltip("Oil Warmed", desc);
break;
}

if (requiresRemoval)
Expand Down